Atrybut method w HTML <form>

Definicja i zastosowanie

method Atrybut określa, jak wysyłać dane formularza (dane formularza będą wysyłane do strony określonej przez atrybut action)

Dane formularza można wysłać jako zmienne URL (używając method="get") lub jako transakcję HTTP POST (używając method="post")

Wyjaśnienie dotyczące GET:

  • Dodaj dane formularza w formie pary nazwa/wartość do URL
  • URL ma ograniczenie długości (około 3000 znaków)
  • Nie używaj GET do wysyłania wrażliwych danych! (Będą widoczne w URL)
  • To jest bardzo przydatne dla formularzy, które użytkownik chce dodać jako zakładkę
  • GET jest bardziej odpowiednie dla danych niesekretowych, takich jak ciąg zapytań w Google.

Wyjaśnienie dotyczące POST:

  • Dodaj dane formularza do ciała żądania HTTP (dane nie będą wyświetlane w URL).
  • Brak ograniczeń dotyczących rozmiaru.
  • Formularze złożone za pomocą POST nie mogą być dodane do zakładek.

Przykład

Przykład 1

Złóż formularz za pomocą metody "get":

<form action="/action_page.php" method="get">
  <label for="fname">Imię:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Nazwisko:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Zatwierdź">
</form>

Spróbuj sam

Przykład 2

Złóż formularz za pomocą metody "post":

<form action="/action_page.php" method="post">
  <label for="fname">Imię:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">Nazwisko:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="Zatwierdź">
</form>

Spróbuj sam

Gramatyka

<form method="get|post">

Wartość atrybutu

Wartość Opis
get Domyślnie. Dodaj dane formularza w formie pary nazwa/wartość do URL: URL?name=value&name=value.
post Wysyłanie danych formularza jako transakcji HTTP POST.

Szczegółowe wyjaśnienie atrybutu method

Przeglądarka przesyła dane z formularza do serwera do przetworzenia za pomocą metody ustawionej za pomocą atrybutu method. Istnieją dwa rodzaje metod: metoda POST i metoda GET.

Jeśli używa się metody POST, przeglądarka będzie wysyłać dane w dwóch krokach. Po pierwsze, przeglądarka nawiąże połączenie z serwerem przetwarzającym formularz, a po nawiązaniu połączenia przeglądarka będzie wysyłać dane do serwera w sposób segmentowany.

Po stronie serwera, jak tylko aplikacja POST-style zaczyna się wykonywać, należy czytać parametry z oznaczonego miejsca, a zanim parametry te mogą być użyte w aplikacji, muszą być one zdekodowane. Specyficzny serwer użytkownika wyraźnie określa, jak aplikacja powinna przyjmować te parametry.

Innym przypadkiem jest użycie metody GET, w tym przypadku przeglądarka nawiązuje połączenie z serwerem przetwarzającym formularz, a następnie wysyła wszystkie dane formularza w jednym kroku transmisji: dane są bezpośrednio dołączane do URL akcji formularza. Między nimi używa się znaku zapytania do rozdzielenia.

Większość przeglądarek może przekazać informacje formularza za pomocą któregokolwiek z tych sposobów, ale niektóre serwery akceptują tylko dane dostarczone przez jedną z tych metod. Możesz wskazać, jak ma być przetwarzana dane, używając atrybutu method (metoda) w znaczniku <form>, aby określić, czy ma to być POST czy GET.

POST czy GET?

Jeśli serwer obsługuje zarówno metodę POST, jak i GET, to哪种方法应该选择?以下是这方面的某些规律:

  • Jeśli chcesz uzyskać najlepszą wydajność przesyłania formularza, możesz użyć metody GET do wysyłania małych formularzy z niewielu krótkich pól.
  • Niektóre systemy operacyjne serwera ograniczają liczbę i długość parametrów wiersza poleceń, które mogą być natychmiast przekazane do aplikacji. W takim przypadku formularze z wieloma polami lub długimi polami tekstowymi powinny być wysyłane za pomocą metody POST.
  • Jeśli masz mało doświadczenia w pisaniu aplikacji do przetwarzania formularzy serwerowych, powinieneś wybrać metodę GET. Jeśli używasz metody POST, musisz wykonać dodatkowe operacje przy odczytywaniu i dekodowaniu, co może nie być trudne, ale może nie być to coś, co chcesz robić.
  • Jeśli bezpieczeństwo jest problemem, zalecamy użycie metody POST. Metoda GET umieszcza parametry formularza bezpośrednio w URL aplikacji, co pozwala na łatwe przechwytywanie ich przez nadzoru sieciowego oraz na wyodrębnienie z dzienników serwera. Jeśli parametry zawierają takie wrażliwe informacje jak numer karty kredytowej, może to nieświadomie zagrozić bezpieczeństwu użytkownika. Aplikacje POST nie mają takich luk bezpieczeństwa, a przynajmniej można je przetwarzać jako oddzielne transakcje z użyciem kodowania.
  • Jeśli chcesz wywołać aplikację serwerową poza formularzem i przekazać jej parametry, musisz użyć metody GET, ponieważ ta metoda pozwala na włączenie parametrów takich jak formularz jako część URL. Z drugiej strony, aplikacje w stylu POST chcą, aby po URL było jeszcze jedno przekazanie z przeglądarki, którego zawartość nie może być częścią treści tradycyjnego znacznika <a>.

Jasne przekazywanie parametrów

Powyższe porady mogą również być pewnym wyjaśnieniem dla wyboru tego sposobu. Załóżmy, że masz bardzo prosty formularz, który zawiera tylko dwa parametry: x i y. Kiedy kodujesz wartości tych elementów, ich forma będzie wyglądać następująco:

x=28&y=66

Jeśli formularz ma metodę GET, URL do aplikacji serwerowej będzie wyglądał następująco:

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

W każdej chwili możemy utworzyć tradycyjny znacznik <a>, który jest używany do wywołania formularza z określonymi parametrami, w następujący sposób:

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

Jedynym problemem jest to, że znak & używany do oddzielania parametrów jest również znakiem wstawiania w kodach znaków. Jeśli umieścisz znak & w atrybucie href etykiety <a>, przeglądarka zastąpi go odpowiednim kodem znaku.

Aby zapobiec temu, musimy zastąpić znak & jego odpowiednikiem w postaci kodu, tj. "&" lub "&". Po zastąpieniu, powyższy przykład odwołania do aplikacji serwerowej, które nie jest formularzem, będzie wyglądał tak:

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

Ponieważ wciąż nie można używać znaku & w URL i istnieje ryzyko zamieszania w przyszłości, zachęcamy serwery do ustawienia, aby również akceptować średnik jako separator parametrów. Możesz również przejrzeć dokumentację swojego serwera, aby dowiedzieć się, czy obsługuje tę funkcję.

Obsługa przeglądarek

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Wsparcie Wsparcie Wsparcie Wsparcie Wsparcie