HTML <form> method-egenskap

Definition och användning

method Egenskapen definierar hur formulärdata ska skickas (formulärdata kommer att skickas till sidan som anges av action-egenskapen)

Formulärdata kan skickas som URL-variabler (använd method="get") eller som HTTP POST-transaktion (använd method="post")

Om GET:

  • Lägg till formulärdata i form av namn/värdepar till URL:en
  • URL har en längdsbegränsning (ungefär 3000 tecken)
  • Använd inte GET för att skicka känslig data! (Kommer att synas i URL:en)
  • Det är mycket användbart för användare som vill lägga resultat till bokmärken i formulärinlämningar
  • GET är mer lämpligt för osäkra data, till exempel querysträngar i Google.

Om betydelsen av POST:

  • Lägg formulärdata i HTTP-forespärrtexten (data visas inte i URL:en).
  • Ingen storleksbegränsning.
  • Formulär som skickas med POST kan inte läggas till i bokmärken.

Exempel

Exempel 1

Använd "get"-metoden för att skicka formuläret:

<form action="/action_page.php" method="get">
  <label for="fname">Förnamn:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Efternamn:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Skicka">
</form>

Prova själv

Exempel 2

Använd "post"-metoden för att skicka formuläret:

<form action="/action_page.php" method="post">
  <label for="fname">Förnamn:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Efternamn:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Skicka">
</form>

Prova själv

Syntaks

<form method="get|post">

Attributvärde

Värde Beskrivning
get Standard. Lägg formulärdata som namn/värde-paare till URL: URL?name=value&name=value.
post Skicka formulärdata som HTTP POST-transaktion

Detaljer om method-attributet

Webbläsaren använder metoden som sätts med method-attributet för att skicka data från formuläret till servern för behandling. Det finns två metoder: POST och GET.

Om POST-metoden används, kommer webbläsaren att skicka data i två steg. Först kommer webbläsaren att etablera kontakt med den formulärhanteringsserver som specificerats i action-attributet, och när anslutningen har etablerats, kommer webbläsaren att skicka data till servern genom segmenterad överföring.

På serverns sida, när en POST-stil applikation börjar köras, bör parametrar läsas från en markörposition, och innan dessa parametrar kan användas av applikationen, måste dessa parametrar decodas. Den specifika servern för användaren kommer att tydligt specificera hur applikationen ska acceptera dessa parametrar.

En annan situation är att använda GET-metoden, då webbläsaren kommer att skapa en anslutning till formulärhanteringsservern och sedan skicka alla formulärdata direkt i en överföringssteg: webbläsaren lägger data direkt efter formulärets action URL. Dessa två används för att separera med en frågetecken.

Alla vanliga webbläsare kan överföra formulärinformation med hjälp av någon av dessa metoder, men vissa servrar accepterar bara data från en av dem. Du kan specificera vilken metod som används för att behandla data i formuläret genom att ange metoden i <form>-etikettens method (metod) -egenskap, antingen POST eller GET.

POST eller GET?

Om formulärhanteringsservern både stöder POST- och GET-metoder, vilket metod bör du välja? Här är några regler om detta:

  • Om du vill få bästa möjliga prestanda för formuläröverföring, kan du använda GET-metoden för att skicka små formulär med bara några korta fält.
  • Några serveroperativsystem begränsar antalet och längden på kommandoradsparametrar som kan överföras direkt till applikationen, och i sådana fall bör formulär med många fält eller långa textfält skickas med POST-metoden.
  • Om du har liten erfarenhet av att skriva serverapplikationer för formulärbehandling, bör du välja GET-metoden. Om du använder POST-metoden måste du göra extra arbete för att läsa och dekoda metoden, vilket kanske inte är särskilt svårt, men kanske inte är något du vill ta dig an.
  • Om säkerhet är ett problem, rekommenderar vi att du använder POST-metoden. GET-metoden lägger formulärparametrarna direkt i URL:en för applikationen, vilket gör det enkelt för nätverksnysökerare att få tag på dem och extrahera dem från serverns loggfiler. Om parametrarna innehåller känslig information som kreditkortsnummer, kan detta hota användarens säkerhet utan att de ens inser det. POST-applikationer har ingen säkerhetslucka, och när parametrarna överförs som en enskild transaktion till servern för behandling, kan de minst krypteras.
  • Om du vill anropa en serverapplikation utanför formuläret och inkludera processen att skicka parametrar till den, måste du använda GET-metoden, eftersom denna metod tillåter att inkludera formulär som en del av URL:en. Å andra sidan vill POST-applikationer att det finns en extra överföringsprocess från webbläsaren efter URL:en, där innehållet inte kan ses som innehåll i en traditionell <a>-etikett.

Tydligt överför parametrar

Några av de tidigare rekommendationerna kan också ses som en förklaring till varför man väljer detta sätt. Anta att du har ett mycket enkelt formulär som bara innehåller parametrarna x och y. När du koder värdena för dessa element, ser de ut så här:

x=28&y=66

Om formuläret använder method=GET, kommer URL:en för att hänvisa till serverapplikationen att se ut så här:

http://www.example.com/example/program?x=28&y=66

O när som helst kan vi skapa en traditionell <a>-etikett, använda den för att anropa en formulär med nödvändiga parametrar, i följande form:

<a href="http://www.example.com/example/program?x=28&y=66">

Det enda problemet är att tecknet & som används för att skilja parametrar är också en karaktärsentitet. Om ett &-tecken placeras i href-egenskapen för <a>-etiketten kommer webbläsaren att ersätta tecknen efter det med motsvarande karaktärsentitet.

För att förhindra detta måste vi ersätta &-tecknet med dess entitetsliknande, det vill säga använda "&" eller "&" för att ersätta. Efter ersättningen kommer den ovanstående referensen till serverns applikation utan formulär att se ut så här:

<a href="http://www.example.com/example/program?x=28&y=66">

Eftersom det fortfarande inte är möjligt att använda &-tecknet i URL:er och det kan orsaka förvirring i framtiden, uppmuntrar vi servrar att också acceptera att använda semikolon som parametaravskiljare. Du kan också titta på din servers dokumentation för att se om din server stöder denna funktion.

Webbläsarstöd

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Stöd Stöd Stöd Stöd Stöd