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>
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>
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 |