POST (HTTP) - POST (HTTP)

W informatyce , POST jest metoda żądania wspierany przez HTTP używany przez World Wide Web . Zgodnie z projektem metoda żądania POST żąda, aby serwer sieci Web zaakceptował dane zawarte w treści wiadomości żądania, najprawdopodobniej w celu ich przechowywania. Jest często używany podczas przesyłania pliku lub przesyłania wypełnionego formularza internetowego .

Natomiast metoda żądania HTTP GET pobiera informacje z serwera. W ramach żądania GET niektóre dane mogą być przekazywane w ciągu zapytania adresu URL , określając (na przykład) wyszukiwane hasła, zakresy dat lub inne informacje definiujące zapytanie.

W ramach żądania POST do serwera można wysłać dowolną ilość danych dowolnego typu w treści wiadomości żądania. Pole nagłówka w żądaniu POST zwykle wskazuje typ mediów internetowych treści wiadomości.

Publikowanie danych

Sieć WWW i HTTP są oparte na wielu metodach żądań lub „czasownikach”, w tym POST i GET, a także PUT, DELETE i kilku innych. Przeglądarki internetowe zwykle używają tylko GET i POST, ale aplikacje internetowe RESTful korzystają z wielu innych. Miejscem POST w zakresie metod HTTP jest przesłanie na serwer reprezentacji nowej encji danych tak, aby była ona przechowywana jako nowy podrzędny zasobu identyfikowanego przez URI . Na przykład w przypadku identyfikatora URI można oczekiwać, że żądania POST będą reprezentować nowych klientów, z których każde zawiera ich imię i nazwisko, adres, dane kontaktowe i tak dalej. Pierwsi projektanci stron internetowych odeszli od tej oryginalnej koncepcji na dwa ważne sposoby. Po pierwsze, nie ma żadnego technicznego powodu, aby identyfikator URI opisał w sposób tekstowy zasób sieciowy, pod którym będą przechowywane dane POST. W rzeczywistości, o ile nie zostaną podjęte pewne wysiłki, ostatnia część identyfikatora URI będzie z większym prawdopodobieństwem opisywać stronę przetwarzania aplikacji internetowej i jej technologię, taką jak . Po drugie, biorąc pod uwagę naturalne ograniczenie większości przeglądarek internetowych do korzystania tylko z GET lub POST, projektanci poczuli potrzebę zmiany przeznaczenia POST w celu wykonywania wielu innych zadań związanych z przesyłaniem danych i zarządzaniem danymi, w tym zmianą istniejących rekordów i ich usuwaniem. http://example.com/customershttp://example.com/applicationform.php

Wysiłki niektórych wpływowych autorów mające na celu naprawienie pierwszego punktu rozpoczęły się już w 1998 roku. Frameworki aplikacji internetowych, takie jak Ruby on Rails i inne, ułatwiają projektantom dostarczanie użytkownikom semantycznych adresów URL . Jeśli chodzi o drugi punkt, możliwe jest użycie skryptów po stronie klienta lub pisanie samodzielnych aplikacji, aby korzystać z innych metod HTTP tam, gdzie są one istotne, ale poza tym większość formularzy internetowych, które przesyłają lub zmieniają dane serwera, kontynuuje używać POST w tym celu.

Nie oznacza to, że każdy formularz internetowy powinien zawierać method="post"w swoim znaczniku otwierającym . Wiele formularzy służy do dokładniejszego określenia pobierania informacji z serwera, bez zamiaru zmiany głównej bazy danych. Na przykład formularze wyszukiwania idealnie nadają się do method="get"sprecyzowania.

Czasami HTTP GET jest mniej odpowiedni nawet do pobierania danych. Przykładem tego jest sytuacja, w której w adresie URL trzeba by podać dużą ilość danych. Przeglądarki i serwery internetowe mogą mieć limity długości adresu URL, który będą obsługiwać bez obcinania lub błędów. Kodowanie procentowe zarezerwowanych znaków w adresach URL i ciągach zapytań może znacznie zwiększyć ich długość, a podczas gdy serwer Apache HTTP Server może obsłużyć do 4000 znaków w adresie URL, program Microsoft Internet Explorer jest ograniczony do 2048 znaków w dowolnym adresie URL. Podobnie, HTTP GET nie powinien być używany, gdy poufne informacje, takie jak nazwy użytkownika i hasła, muszą być przesłane wraz z innymi danymi, aby żądanie zostało ukończone. Nawet jeśli używany jest protokół HTTPS , zapobiegający przechwyceniu danych podczas przesyłania, historia przeglądarki i dzienniki serwera internetowego prawdopodobnie będą zawierać pełny adres URL w postaci zwykłego tekstu, który może zostać ujawniony w przypadku zhakowania dowolnego systemu. W takich przypadkach należy użyć HTTP POST.

Użyj do przesyłania formularzy internetowych

Gdy przeglądarka internetowa wysyła żądanie POST z elementu formularza internetowego , domyślnym typem mediów internetowych jest „ application/x-www-form-urlencoded ”. Jest to format kodowania par klucz-wartość z prawdopodobnie zduplikowanymi kluczami. Każda para klucz-wartość jest oddzielona znakiem „&”, a każdy klucz jest oddzielony od swojej wartości znakiem „=”. Klucze i wartości są escapowane przez zastąpienie spacji znakiem „+”, a następnie użycie kodowania procentowego na wszystkich innych znakach niealfanumerycznych .

Na przykład pary klucz-wartość

Name: Gareth Wylie
Age: 24
Formula: a+b == 21

są zakodowane jako

Name=Gareth+Wylie&Age=24&Formula=a%2Bb+%3D%3D+21

Począwszy od języka HTML 4.0, formularze mogą również przesyłać dane w postaci danych wieloczęściowych/formularzy, zgodnie z definicją w RFC 2388 (patrz także RFC 1867, aby uzyskać informacje na temat wcześniejszej wersji eksperymentalnej zdefiniowanej jako rozszerzenie do HTML 2.0 i wspomnianej w HTML 3.2).

Specjalny przypadek POST do tej samej strony, do której należy formularz, jest znany jako ogłaszanie zwrotne .

Wpływa na stan serwera

Zgodnie z RFC 7231 metoda POST nie jest idempotentna , co oznacza, że ​​wiele identycznych żądań może nie mieć takiego samego efektu, jak przesłanie żądania tylko raz. POST jest zatem odpowiedni dla żądań, które zmieniają stan za każdym razem, gdy są wykonywane, na przykład dodanie komentarza do posta na blogu lub głosowanie w ankiecie internetowej. GET jest zdefiniowany jako nullipotent , bez efektów ubocznych, a operacje idempotentne nie mają "żadnych skutków ubocznych na drugie lub przyszłe żądania". Z tego powodu roboty sieciowe, takie jak indeksatory wyszukiwarek, zwykle używają wyłącznie metod GET i HEAD, aby zapobiec wykonywaniu takich działań przez ich automatyczne żądania.

Istnieją jednak powody, dla których POST jest używany nawet w przypadku żądań idempotentnych, zwłaszcza jeśli żądanie jest bardzo długie. Ze względu na ograniczenia dotyczące adresów URL ciąg zapytania generowany przez metodę GET może stać się bardzo długi, zwłaszcza z powodu kodowania procentowego .

Bibliografia

Zewnętrzne linki