Protokół HTTP 1.1 *) Wprowadzenie Jarek Durak * rfc2616 źródło www.w3.org 1999
HTTP Hypertext Transfer Protocol Protokół transmisji hipertekstu został zaprojektowany do komunikacji serwera WW z klientem (przeglądarką) używany od 1990 roku do obsługi WWW jest protokołem warstwy aplikacyjnej dla rozproszonych hipermedialnych systemów może być używany do innych zadań niż WWW umożliwia negocjację rodzaju i typu danych
Historia HTTP Pierwsza wersja protokołu 0.9 z 1990r była bardzo prosta Wersja 1.0 wprowadzała: formaty podobne do typu MIME zawierające meta- informacje o danych zmodyfikowane żądania i odpowiedzi Wersja 1.1 obsługa hierarchicznych serwerów proxy (pośredników) stałych połączeń i hostów wirtualnych
Pojęcia Serwer proxy (pośrednik) pośredniczy w przesyłaniu żądań między przeglądarką WWW i serwerem WWW, działa jak klient i serwer Przechowuje raz ściągnięte strony Serwer wirtualny wywoływany adres URL (http://www.wp.pl) jest obsługiwany przez serwer, którego podstawowy adres jest zupełnie inny. Jeden serwer fizyczny obsługuje zwykle wiele serwerów wirtualnych
Pojęcia MIME (Multipurpose Internet Mail Extensions) format pozwalający na szczegółowy opis przesyłanych danych Hipertekst tekst zawierający znaczniki i odwołania do innych dokumentów lub innego fragmentu tekstu Protokół Język komunikacji
Protokół HTTP Używa najczęściej protokołu TCP/IP do przesyłania żądań i odpowiedzi port 80 dla serwerów WWW 8080 dla serwerów proxy wersja 1.0 wymaga oddzielnych połączeń dla każdego elementu strony - żądania (tekst, grafika...) wersja 1.1 pozwala na przesyłanie wielu żądań/odpowiedzi w jednym połączeniu
HTTP URI i URL identyfikują żądany zasób protokół://serwer:port/ścieżka?parametry parametr: zmienna1=wartość1&zmienna2=wartość2&... minimalnie http://serwer/ znaki specjalne zastępowane są ich wartością szesnastkową poprzedzoną % następujące URI są równoważne http://abc.com:80/~smith/home.html http://abc.com/%7esmith/home.html http://abc.com:/%7esmith/home.html
HTTP URI i URL? - oddziela nazwę zasobu na serwerze od listy parametrów & - oddziela poszczególne pary parametr=wartość Znaki specjalne (spacja,?,&,%...) oraz niektóre znaki narodowe muszą być zakodowane za pomocą znaku % i kodu hex ASCII znaku np: <spacja> - %20
HTTP URI i URL
HTTP URI i URL http://www.google.com/search?hl=pl&ie=utf-8&oe=utf-8&q=agh& btng=szukaj&lr=lang_pl http:// - użycie protokołu HTTP www.google.com - nazwa serwera search nazwa pliku na serwerze lista parametrów: hl=pl host location Polska q=agh question agh ie=utf-8 kodowanie znaków UTF-8 btng=szukaj pytanie wysłane przyciskiem Szukaj lr=lang_pl language requested język polski
HTTP format czasu Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, zmodyfikowane przez RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, przestarzałe RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C asctime() format
HTTP aplikacje User-Agent: określa zgodność przeglądarki ze standardem konkretną wersje np.: Mozilla/4 MSIE /4.0b2 Server: określa nazwę i wersję serwera WWW np.: Apache/2.0.45 IIS/5.0
HTTP waga przyjmuje wartości od 0 do 1 np.: q=0.7 język umożliwia negocjację języka między serwerem i przeglądarką Accept-Language jest ustawione przez klienta Content-Language jest ustawione przez serwer Przykładowe wartości: pl, en, en-us, en-cockney, i-cherokee, x- pig-latin,
HTTP wiadomość Typ widomości Request - żądanie Response - odpowiedź Nagłówek wiadomości składa się z par nazwa:wartość Treść wiadomości (Message Body) Długość wiadomości (Message Length) określana za pomocą Content-Length określa długość treści wiadomości
HTTP żądanie Metoda <pojedynczy odstęp> żądany-uri <pojedynczy odstęp> Wersja-HTTP <znak nowej linii> Treść-wiadomości GET http://www.w3.org/pub/www/theproject.html HTTP/1.1 Metody określa sposób żądania informacji np. GET żądany-uri pełny adres, ścieżka lub * co oznacza odwołanie do samego serwera np. OPTIONS * HTTP/1.1
HTTP żądanie GET /pub/www/theproject.html HTTP/1.1 Host: www.w3.org jest równoważne GET http://www.w3.org/pub/www/theproject.html HTTP/1.1
HTTP żądanie - metody OPTIONS żądanie informacji o połączeniu dotyczy najczęściej serwera a nie konkretnego zasobu np. OPTIONS * HTTP/1.1 GET żądanie zasobów zasobów przekazywane poprzez URI : GET http://www.wp.pl/szukaj.html?szukaj=www HTTP/1.1 odmiany: warunkowy lub częściowy
HTTP żądanie - metody HEAD jak GET, w odpowiedzi nie może być treści POST żądanie nie jest widoczne w URL używany jest do przesyłania większych porcji informacji (np. plików). czas ważności żądania jest ograniczony PUT stosowany jest do umieszczania określonej informacji na serwerze (np. pliku)
HTTP żądanie - metody DELETE usuwanie zasobów z serwera (plików) TRACE pozwala klientowi sprawdzić informację otrzymywaną przez serwer Odpowiedź nie zawiera treści nie jest wysyłane przez serwer proxy CONNECT używane przez serwery proxy
HTTP Odpowiedź Wersja-HTTP <pojedyncza spacja> Kod-Stanu <pojedyncza spacja> Opis-Kodu <Nowa Linia> Treść-Wiadomości Kod-Stanu jest liczbą trzycyfrową określającą powodzenie, niepowodzenie operacji i jego rodzaj 1xx - żądanie odebrane, operacja w toku 2xx - żądanie odebrane, zaakceptowane 3xx - przekierowanie żądania 4xx - błąd w żądaniu, zła składnia, brak dostępu, brak autoryzacji... 5xx - błąd serwera
HTTP nagłówek Nagłówek ogólny Nagłówek żądania Nagłówek odpowiedzi
HTTP nagłówek Accept w nagłówku żądania określa jakie typy informacji są akceptowane w odpowiedzi Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c Accept-Charset określa jaki/jakie strony kodowe znaków narodowych są akceptowane w odpowiedzi Accept-Charset: iso-8859-2, unicode-1-1;q=0.8 Accept-Encoding określa jakie kodowanie jest akceptowane
HTTP nagłówek Accept-Encoding Accept-Encoding: compress, gzip Accept-Language określa akceptowane w odpowiedzi języki narodowe Accept-Language: da, en-gb;q=0.8, en;q=0.7 Accept-Ranges określa zakresy danych akceptowane przez serwer
HTTP nagłówek Age czas w jakim oczekiwana jest odpowiedź Age: 20 (w sekundach) Allow określa akceptowane przez serwer metody Allow: GET, HEAD, PUT Authorisation wysyłany jest przez klienta, który chce się uwierzytelnić (np. nazwa użytkownika i hasło) wysyłany jest w odpowiedzi na ko
HTTP nagłówek Authorisation wysyłany jest w odpowiedzi na kod-stanu 401 (brak autoryzacji) Cache-Control nagłówek ogólny określający przechowywanie danych w łańcuchu żądań/odpowiedzi Cache-Control: dyrektywy w żądaniu używane są dyrektywy: no-cache, no-store, max-age=delta-sek., maxstale=delta-sek., min-fresh=d-sek., no-transform
HTTP nagłówek Cache-Control w odpowiedzi używane są dyrektywy: public, private, no-cache, no-store, no-transform, must-revalidate, proxy-revalidate Connection określa parametry dotyczące połączenia (bez pośrednictwa proxy) Content-Encoding określa sposób kodowania treści informacji Content-Encoding: zip
HTTP nagłówek Content-Language określa język narodowy treści informacji Content-Encoding: pl, en Content-Length określa wielkość treści informacji w bajtach Content-Length: 3495 Content-Location może służyć do określenia zasobów znajdujących się w innym miejscu niż przesyłana treść
HTTP nagłówek Content-MD5 pozwala na umieszczenie skrótu kryptograficznego wiadomości służącego sprawdzeniu integralności informacji. Content-MD5: md5-digest Content-Rage określa jaka część informacji będzie przesłana w treści informacji w połączeniu z nagłówkiem Partial content Content-Rage: bytes 500-999/1234
HTTP nagłówek Content-Type pozwala określić typ przesyłanych w treści danych. Content-Type: text/html Content-Type: text/html; charset=iso-8859-2 Date określa datę utworzenia wiadomości Date: Tue, 15 Nov 1994 08:12:31 GMT
HTTP nagłówek Expect Określa zachowanie serwera wymagane przez klienta Expires określa wygaśnięcia ważności wiadomości Expires: Thu, 01 Dec 1994 16:00:00 GMT From określa adres e-mail osoby używającej przeglądarki From: webmaster@w3.org
HTTP nagłówek Host określa adres serwera i port do którego wysyłamy żądanie Host: www.w3.org:80 odwołując się do http://www.w3.org/pub/www/ otrzymamy np.: GET /pub/www/ HTTP/1.1 Host: www.w3.org Dyrektywy warunkowe: if-match, If-Modified-Since, If-None-Match, If-Range,
HTTP nagłówek Last-Modified Określa datę ostatnie modyfikacji dokumentu Location określa URL używany do przekierowania klienta Location: http://www.w3.org/pub/www/people.html Max-Forwards pozwala ograniczyć ilość pośrednich serwerów proxy
HTTP nagłówek Pragma Określa sposób traktowania informacji przez systemy cache/proxy Pragma: no-cache Proxy-Authenticate, Proxy-Authorization pierwszy jest odpowiedzią serwera proxy na próbę połączenia, drugi odpowiedzią klienta na konieczność autoryzacji przez serwer proxy Rage określa zakres fragmentu przesyłanej treści
HTTP nagłówek Referer wysyłane przez klienta pozwala na określenie przez serwer adresu z którego klient się odwołał Retry-After Określa w razie statusu serwera (usługa czasowo niedostępna) 503 czas po którym powinno nastąpić ponowienie próby Server określa nazwę i wersję serwera oraz komentarz Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1
HTTP nagłówek User-Agent Określa wersję oprogramowania klienta (przeglądarki) User-Agent: Mozilla/4.76 [en] (WinNT; U) Via Określa pośredników (proxy) WWW-Authenticate - sposób autoryzacji klienta Inne: TE, Trailer, Transfer-Encoding, Upgrade, Vary, Warning