HTML <form> method-egenskab
Definition og brug
method
Egenskaber definerer, hvordan formulardata sendes (formulardata sendes til den side, der er angivet i action-egenskaben)
Formulardata kan sendes som URL-variabler (brug method="get") eller som HTTP POST-transaktioner (brug method="post")
Om GET-beskrivelse:
- Tilføj formulardata som et navn/værdi-par til URL'en
- URL har en længdestyringsbegrænsning (ca. 3000 tegn)
- Brug aldrig GET til at sende følsomme data! (Det vil være synligt i URL'en)
- Det er meget nyttigt for brugere, der ønsker at tilføje resultater som bogmærker til formularens indsendelse
- GET er mere egnet til ikke-sikre data, såsom søgestringen i Google.
Om POST:
- Tilføj formulardata i HTTP-forespørgselskorpus (dataene vises ikke i URL'en).
- Ingen størrelsesbegrænsning.
- Formularer, der indsendes med POST, kan ikke tilføjes som bogmærker.
Eksempel
Eksempel 1
Indsend formularen ved hjælp af "get"-metoden:
<form action="/action_page.php" method="get"> <label for="fname">Fornavn:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Efternavn:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Indsend"> </form>
Eksempel 2
Indsend formularen ved hjælp af "post"-metoden:
<form action="/action_page.php" method="post"> <label for="fname">Fornavn:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Efternavn:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Indsend"> </form>
Syntaks
<form method="get|post">
Attributværdi
Værdi | Beskrivelse |
---|---|
get | Standard. Tilføj formulardata som navne/værdier til URL: URL?navn=værdi&navn=værdi. |
post | Send formulardata som HTTP POST-transaktion |
Detaljer om method-attributten
Browseren sender dataene fra formularen til serveren til behandling ved hjælp af metoden, der er indstillet med method-attributten. Der er to metoder: POST-metoden og GET-metoden.
Hvis POST-metoden bruges, vil browseren sende dataene i to trin. Først opretter browseren forbindelse til den server, der er specificeret i action-attributten, og efter at forbindelsen er oprettet, sender browseren dataene til serveren ved hjælp af en delvis overførselsmetode.
På serverens side skal parametre læses fra et markørsted, når en POST-stil applikation begynder at køre, og før parametrene kan bruges i applikationen, skal de dekodes. Den specifikke server for brugeren specificerer, hvordan applikationen skal modtage disse parametre.
En anden situation er at bruge GET-metoden, hvor browseren opretter en forbindelse til formbehandlingsserveren, og sender derefter alle formulardataene direkte i en overførselssteg: Browseren tilføjer dataene direkte efter formularens action URL. Disse to adskilles af et spørgsmålstegn.
Generelle browsere kan overføre formulardata ved hjælp af nogen af disse metoder, mens nogle servere kun accepterer data fra én af dem. Du kan specificere den metode, som formularbehandlingsserveren skal bruge til at behandle data, ved at angive metoden i <form>-etikettens method (metode) egenskab, hvilket gør det muligt at vælge mellem POST eller GET.
POST eller GET?
Hvis formularbehandlingsserveren både understøtter POST- og GET-metoder, så hvilken metode skal du vælge? Her er nogle regler omkring dette:
- Hvis du ønsker at opnå den bedste formularoverførselsydeevne, kan du bruge GET-metoden til at sende små formularer med få korte felter.
- Nogle serveroperativsystemer begrænser antallet og længden af kommandoer, der kan overføres direkte til applikationen, så i disse tilfælde skal du bruge POST-metoden til at sende formularen, hvis den har mange felter eller lange tekstfelter.
- Hvis du ikke har meget erfaring med at skrive server-side formularbehandlingsapplikationer, bør du vælge GET-metoden. Hvis du bruger POST-metoden, skal du gøre nogle ekstra arbejder med læsning og dekoding, som måske ikke er svært, men som du måske ikke ønsker at håndtere.
- Hvis sikkerhed er et problem, anbefaler vi at bruge POST-metoden. GET-metoden placerer formularparametre direkte i applikationens URL, hvilket gør det nemt for netnysgerrige at fange dem og udtrække dem fra serverens logfiler. Hvis parametrene inkluderer følsomme oplysninger som kreditkortnummer, kan det uopmærksomt true brugerens sikkerhed. POST-applikationer har ingen sikkerhedsproblemer, og når parametrene sendes som separate transaktioner til serveren til behandling, kan de mindst krypteres.
- Hvis du vil kalde en serverapplikation uden for formularen og inkludere overførsel af parametre, skal du bruge GET-metoden, fordi denne metode tillader at inkludere formularparametre som en del af URL'en. På den anden side ønsker POST-applikationer at have en ekstra overførselsproces fra browseren efter URL'en, hvor indholdet ikke kan bruges som indhold i en traditionel <a>-etiket.
Klar parameteroverførsel
Nogle af de tidligere anbefalinger kan også bruges som en vis forklaring på, hvorfor man vælger denne metode. Antag, at du har en meget simpel formular, der kun indeholder parametrene x og y. Når man koder værdierne for disse elementer, ser de sådan ud:
x=28&y=66
Hvis formularen bruger method=GET, vil URL'en til serverapplikationen se sådan ud:
http://www.example.com/example/program?x=28&y=66
Hvad som helst tid kan vi oprette en traditionel <a>-etiket, brug det til at kalde en formular med de nødvendige parametre, som vist nedenfor:
<a href="http://www.example.com/example/program?x=28&y=66">
Det eneste problem er, at symbolet & bruges også som insertersymbolet i character entities. Hvis man putter et &-symbolet i href-egenskaben i en <a>-etiket, vil browseren erstatte de efterfølgende tegn med de tilsvarende character entities.
For at undgå dette skal vi erstatte &-symbolet med dets entity-lignende, det vil sige med "&" eller "&". Efter erstatning vil den ovennævnte reference til serverapplikationen uden formularet se sådan ud:
<a href="http://www.example.com/example/program?x=28&y=66">
Selvom det stadig ikke er muligt at bruge &-symbolet i URL'er, og det kan medføre forvirring i fremtiden, opfordrer vi servere til også at acceptere semikolon som parameteradskiller. Du kan også se på din servers dokumentation for at se, om din server understøtter denne funktion.
Browserunderstøttelse
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
Support | Support | Support | Support | Support |