• Nie Znaleziono Wyników

Protokół HTTP 1.1

N/A
N/A
Protected

Academic year: 2021

Share "Protokół HTTP 1.1"

Copied!
35
0
0

Pełen tekst

(1)

Protokół HTTP 1.1

*)

Wprowadzenie

Jarek Durak

* rfc2616 źródło www.w3.org 1999

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

HTTP URI i URL

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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)

(19)

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

(20)

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

(21)

HTTP nagłówek

 Nagłówek ogólny

 Nagłówek żądania

 Nagłówek odpowiedzi

(22)

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

(23)

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

(24)

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

(25)

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., max- stale=delta-sek., min-fresh=d-sek., no-transform

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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,

(32)

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

(33)

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

(34)

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

(35)

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

Cytaty

Powiązane dokumenty

Otóż każdy, kto jest podłączony do globalnej sieci, łączy się z nią za pośrednictwem Dostawcy Usług Internetowych (ISP – Internet Service Provider), czyli operatora..

Cienki, masywny pr˛et umocowany jest na niewa˙zkiej, osi przechodz ˛acej przez jego ´srodek masy i tworz ˛acej z pr˛etem k ˛at α. Pr˛et obraca si˛e ze stał ˛a pr˛edko´sci

kawałkiem papieru lub folii plastikowej. Nast˛epnie wyznacz zale˙zno´s´c mocy P pobier- anej przez włókno od jego temperatury. Odpowiednie pomiary wykonaj dla nat˛e˙zenia pr

W związku z tym łączny czas wykonania przez jeden wątek zlecenia wymagającego operacji dyskowej wynosi 1*(8ms + 60ms) = 68ms, gdyż dopiero w 68ms po otrzymaniu takiego zlecenia

+ obsługa różnorodnych metody uwierzytelniania, + istnieje możliwość negocjacji używanej metody uwierzytelniania, + ponieważ urządzenie dostępowe może pracować w roli

Do konfiguracji wykorzystuje się najczęściej wspomniane wcześniej pliki .htaccess - dzięki temu unika się restartowania serwera przy zmianie konfiguracji, ponadto

• Uruchamiany skrypt otrzymuje wszystkie informacje z żądania http – w tym żądany zasób oraz wszystkie nagłówki; Zasób z żądania może zawierać dane z formularza

156 ust.1 ustawy Prawo oświatowe, wniosek o przyjęcie do publicznego przedszkola, innej formy wychowania przedszkolnego oraz szkoły, może być złożony do nie więcej niż