HTML <form> method-eigenschap
Definitie en gebruik
method
De eigenschap definieert hoe formuliergegevens worden verzonden (de formuliergegevens worden naar de pagina verstuurd die is gespecificeerd in de action-eigenschap)
Formuliergegevens kunnen worden verzonden als URL-variabelen (met method="get") of als HTTP POST-transactie (met method="post")
Informatie over GET:
- Voeg formuliergegevens toe aan de URL in de vorm van naam/waardeparen
- De URL heeft een lengtebeperking (ongeveer 3000 tekens)
- Gebruik GET niet om gevoelige gegevens te verzenden! (Zal zichtbaar zijn in de URL)
- Het is erg nuttig voor formulierindienen, waarbij gebruikers het resultaat willen toevoegen aan hun favorieten
- GET is geschikt voor niet-beveiligde gegevens, zoals zoekstrings in Google.
Overzicht van POST:
- Voeg formuliergegevens toe aan het lichaam van de HTTP-verzoek (de gegevens worden niet weergegeven in de URL).
- Geen limiet op de grootte.
- Formulieren die met POST worden ingediend, kunnen niet worden toegevoegd aan een bladwijzer.
Voorbeeld
Voorbeeld 1
Gebruik de "get"-methode om het formulier in te dienen:
<form action="/action_page.php" method="get"> <label for="fname">Voornaam:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Achternaam:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Indienen"> </form>
Voorbeeld 2
Gebruik de "post"-methode om het formulier in te dienen:
<form action="/action_page.php" method="post"> <label for="fname">Voornaam:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Achternaam:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Indienen"> </form>
Syntaxis
<form method="get|post">
Eigenschapswaarde
Waarde | Beschrijving |
---|---|
get | Standaard. Voeg het formuliergegevens toe als naam/waarde-paar aan de URL: URL?name=value&name=value. |
post | Verstuur het formuliergegevens als HTTP POST-transactie. |
Uitleg van het method-eigenschap
De browser stuurt de gegevens in het formulier naar de server voor verwerking met behulp van de methode die is ingesteld met het method-eigenschap. Er zijn twee methoden: POST-methode en GET-methode.
Als de POST-methode wordt gebruikt, zal de browser de gegevens verzenden volgens de volgende twee stappen. Ten eerste maakt de browser verbinding met de server die is gespecificeerd in het action-eigenschap van het formulier, en zodra de verbinding is gemaakt, stuurt de browser de gegevens naar de server via segmentgebaseerde overdracht.
Aan de serverkant, zodra een POST-gebaseerde applicatie begint met uitvoeren, moeten parameters worden gelezen vanaf een kenmerkend punt, en voordat deze parameters door de applicatie kunnen worden gebruikt, moeten deze parameters ontsleuteld worden. De specifieke server van de gebruiker specifies hoe de applicatie deze parameters moet accepteren.
Een andere situatie is het gebruik van de GET-methode, waarbij de browser een verbinding maakt met de server die de formulierafhandeling uitvoert, en vervolgens alle formuliergegevens in één overdrachtsstap verstuurt: de browser voegt de gegevens direct toe aan de actie-URL van het formulier. Tussen deze twee wordt gescheiden door een vraagteken.
De meeste browsers kunnen formulierinformatie overbrengen via bovenstaande methoden, maar sommige servers accepteren alleen gegevens van één van deze methoden. Je kunt de methode die de server moet gebruiken om gegevens te verwerken, aangeven in de method (methode) eigenschap van het <form> tag, zodat je kunt kiezen tussen POST of GET.
POST of GET?
Als de server voor formulierverwerking zowel de POST-methode als de GET-methode ondersteunt, moet je kiezen voor welke methode? Hier zijn enkele regels over dit onderwerp:
- Als je de beste prestaties van het verzenden van formulieren wilt bereiken, kun je de GET-methode gebruiken om kleine formulieren met maar een paar korte velden te verzenden.
- Sommige serverbesturingssystemen beperken het aantal en de lengte van de opdrachtparameters die onmiddellijk aan de applicatie kunnen worden doorgegeven, en in dit geval moet je de POST-methode gebruiken om formulieren met veel velden of lange tekstvelden te verzenden.
- Als je weinig ervaring hebt met het schrijven van serverzijdige formulierverwerkingsapplicaties, moet je de GET-methode kiezen. Als je de POST-methode gebruikt, moet je extra werk doen bij het lezen en decoderen van de methode, wat misschien niet moeilijk is, maar misschien wil je deze problemen niet aanpakken.
- Als beveiliging een probleem is, raden we aan om de POST-methode te kiezen. De GET-methode plaatst de formulierparameters direct in de URL van de applicatie, zodat netwerkspionnen deze gemakkelijk kunnen vangen en ook uit de logbestanden van de server kunnen extraheren. Als de parameters gevoelige informatie bevatten zoals een creditcardrekeningnummer, kan dit ongemerkt de veiligheid van de gebruiker in gevaar brengen. Applicaties in de POST-stijl hebben geen beveiligingslekken, en je kunt ten minste encryptie gebruiken om de parameters als afzonderlijke transacties naar de server te sturen voor verwerking.
- Als je de serverapplicatie buiten het formulier wilt aanroepen en het proces om parameters naar deze door te geven wilt meenemen, moet je de GET-methode gebruiken, omdat deze methode het mogelijk maakt om parameters zoals een formulier in te sluiten als onderdeel van de URL. Aan de andere kant, willen applicaties in de POST-stijl dat er een extra overdrachtsproces komt van de browser aan het einde van de URL, waarbij de overgebrachte inhoud niet als inhoud van de traditionele <a> tag kan worden weergegeven.
Parameters expliciet overbrengen
Een aantal van deze aanbevelingen kunnen ook als een uitleg worden gezien voor het kiezen van deze manier. Stel dat je een zeer eenvoudig formulier hebt, dat alleen de parameters x en y bevat. Bij het coderen van de waarden van deze elementen, hebben ze de vorm zoals hieronder weergegeven:
x=28&y=66
Als het formulier method=GET gebruikt, dan ziet de URL om de serverapplicatie aan te roepen er als volgt uit:
http://www.example.com/example/program?x=28&y=66
Op elk moment kunnen we een traditionele <a> tag maken, om deze te gebruiken om een formulier aan te roepen met de vereiste parameterwaarden, zoals hieronder weergegeven:
<a href="http://www.example.com/example/program?x=28&y=66">
Het enige probleem is dat het &-teken dat wordt gebruikt om parameters te scheiden, ook een character entity insert-teken is. Als je een &-teken in de href-eigenschap van een <a>-tag plaatst, zal de browser de tekens na het &-teken vervangen door de bijbehorende character entity.
Om dit te voorkomen, moeten we het teken vervangen door zijn equivalente entity, dat wil zeggen door "&" of "&" te vervangen. Na de vervanging zal de bovenstaande niet-formulier referentie van de server applicatie er als volgt uitzien:
<a href="http://www.example.com/example/program?x=28&y=66">
Ondanks dat het nog steeds niet mogelijk is om het &-teken te gebruiken in een URL en er is een kans dat dit in de toekomst verwarring kan veroorzaken, moedigen we servers aan om ook het gebruik van een puntkomma als parameterseparator te accepteren. U kunt ook uw serverdocumenten bekijken om te zien of uw server deze functie ondersteunt.
Browserondersteuning
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
Ondersteuning | Ondersteuning | Ondersteuning | Ondersteuning | Ondersteuning |