For faster navigation, this Iframe is preloading the Wikiwand page for HTTP.

HTTP

Zapytanie HTTP w terminalu protokołu Telnet w systemie Linux Ubuntu.

HTTP (ang. Hypertext Transfer Protocol) – protokół stworzony przez Tima Bernersa-Lee na potrzeby komunikacji między klientem a serwerem w sieci WWW (ang. World Wide Web). Najnowszą specyfikację HTTP stanowi dokument RFC 2616 ↓. Przy pomocy protokołu klienci HTTP komunikują się z serwerami, zamawiając pliki składające się na strony internetowe oraz dostarczają niezbędne do tego informacje, np. treści wprowadzane w formularzach.

Określa on formę żądań klienta (tj. np. przeglądarki www) dotyczących danych oraz formę odpowiedzi serwera na te żądania. W oryginalnych implementacjach był protokołem bezstanowym (ang. stateless), bowiem nie zachowywał żadnych informacji o poprzednich transakcjach z klientem. Pozwalało to znacznie zmniejszyć obciążenie serwera, jednak jest kłopotliwe w sytuacji, gdy np. trzeba zapamiętać konkretny stan dla użytkownika, który wcześniej łączył się już z serwerem. Jeszcze w latach 90. XX wieku firma Netscape wprowadziła początkowo nieformalne, a następnie ustandaryzowane rozszerzenie znane jako ciasteczka. Inne podejścia to m.in. sesje po stronie serwera, ukryte parametry – gdy aktualna strona zawiera formularz – oraz parametry umieszczone w URL-u (jak np. /index.php?userid=3).

Serwery obsługujące HTTP standardowo nasłuchują na porcie TCP numer 80[1].

W 2015 opublikowana została kolejna wersja protokołu HTTP/2, a w 2022 kolejna HTTP/3.

Metody HTTP

[edytuj | edytuj kod]
  1. GET – pobranie zasobu wskazanego przez URI, może mieć postać warunkową, jeśli w nagłówku występują pola warunkowe takie jak „If-Modified-Since”
  2. HEAD – pobiera informacje o zasobie, stosowane do sprawdzania dostępności zasobu
  3. PUT – przyjęcie danych przesyłanych od klienta do serwera, najczęściej, aby zaktualizować wartość encji
  4. POST – przyjęcie danych przesyłanych od klienta do serwera (np. wysyłanie zawartości formularzy)
  5. DELETE – żądanie usunięcia zasobu, włączone dla uprawnionych użytkowników
  6. OPTIONS – informacje o opcjach i wymaganiach istniejących w kanale komunikacyjnym
  7. TRACE – diagnostyka, analiza kanału komunikacyjnego
  8. CONNECT – żądanie przeznaczone dla serwerów pośredniczących pełniących funkcje tunelowania
  9. PATCH – aktualizacja części danych

Metoda CONNECT nie jest częścią standardu HTTP/1.1, jednak jest powszechnie implementowana na podstawie dokumentu internet-draft wygasłego w 1999 roku[2].

Typowe zapytanie HTTP

[edytuj | edytuj kod]
  1. GET / HTTP/1.1 (prośba o zwrócenie dokumentu o URI / zgodnie z protokołem HTTP 1.1)
  2. Host: example.com (wymagany w HTTP 1.1 nagłówek Host służący do rozpoznania hosta, jeśli serwer na jednym IP obsługuje kilka VirtualHostów)
  3. User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (nazwa aplikacji klienckiej)
  4. Accept: text/xml,application/xml, application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8 (akceptowane (bądź nieakceptowane dla q=0) przez klienta typy plików)
  5. Accept-Language: pl,en-us;q=0.7,en;q=0.3 (preferowany język strony – nagłówek przydatny przy Language negotiation)
  6. Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 (preferowane kodowanie znaków, patrz strona kodowa)
  7. Keep-Alive: 300 (czas, jaki klient chce zarezerwować do następnego zapytania w przypadku połączenia Keep-Alive)
  8. Connection: keep-alive (chęć nawiązania połączenia stałego Keep-Alive z serwerem HTTP/1.0)
  9. znak powrotu karetki i nowej linii (CRLF)

HTTP/1.1 dopuszcza wysłanie kilku żądań naraz (pipelining). HTTP/1.0 zakłada jedno żądanie i jedną odpowiedź.

Odpowiedź serwera WWW

[edytuj | edytuj kod]
  1. HTTP/1.1 200 OK (kod odpowiedzi HTTP - zaakceptowanie i zwrócenie zawartości)
  2. Date: Thu, 20 Dec 2001 12:04:30 GMT (czas serwera)
  3. Server: Apache/2.0.50 (Unix) DAV/2 (opis aplikacji serwera)
  4. Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ (nakazanie klientowi zapisania ciasteczka)
  5. Expires: Thu, 19 Nov 1981 08:52:00 GMT (czas wygaśnięcia zawartości zwróconego dokumentu. Data w przeszłości zabrania umieszczenie dokumentu w pamięci podręcznej. Jest to stara metoda zastąpiona przez Cache-Control)
  6. Cache-Control: no-store, no-cache, must-revalidate (no-store zabrania przechowywania dokumentu na dysku, nawet gdy nie jest to pamięć podręczna. must-revalidate nakazuje bezwzględnie stosować się do wytycznych i sprawdzić świeżość dokumentu za każdym razem)
  7. Keep-Alive: timeout=15, max=100
  8. Connection: Keep-Alive (akceptacja połączenia Keep-Alive dla klientów HTTP/1.0)
  9. Transfer-Encoding: chunked (typ kodowania zawartości stosowanej przez serwer)
  10. Content-Type: application/xhtml+xml; charset=utf-8 (typ MIME i strona kodowa zwróconego dokumentu)
  11. znak powrotu karetki i nowej linii (CRLF)
  12. tutaj zawartość dokumentu

HTTP do obsługi połączeń Keep-Alive wymaga, aby odpowiedź od serwera miała znaną długość (przez podanie Content-Length lub użycie Transfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie połączenia i Keep-Alive nie może działać.

Nagłówek Keep-Alive jest rozszerzeniem HTTP/1.0. W HTTP/1.1 ten nagłówek nie jest potrzebny, gdyż połączenia Keep-Alive są domyślne (zachowanie zmienia Connection: close).

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. R. Fielding i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, IETF, czerwiec 1999, DOI10.17487/RFC2616, ISSN 2070-1721, OCLC 943595667 (ang.).
  2. Ari Luotonen: Tunneling TCP based protocols through Web proxy servers. 1998. [dostęp 2009-07-29]. [zarchiwizowane z tego adresu (2009-08-11)].

Linki zewnętrzne

[edytuj | edytuj kod]
{{bottomLinkPreText}} {{bottomLinkText}}
HTTP
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?