Kurs WWW – czyli opowieści niesamoWWWite

Transkrypt

Kurs WWW – czyli opowieści niesamoWWWite
Kurs WWW
Paweł Rajba
[email protected]
http://pawel.ii.uni.wroc.pl/
Protokół HTTP/1.1
URI, URL, URN
 URI, czyli Uniform Resource Identifier
 URL, czyli Uniform Resource Locator
 URN, czyli Uniform Resource Name
Spojrzenie
 Klasyczne (URI = [URL lub URN])
 Obecne (URI = URL)
Protokół HTTP/1.1 c.d.
Składnia URI
 <scheme>://<authority><path>?<query>
Przykłady typowych schematów
 http://localhost:80/index.php?z1=w1&z2=w2
 ftp://user:[email protected]:21/dokument.txt
 mailto:[email protected]
 news://pl.comp.os.linux/
 telnet://156.17.4.4/
Protokół HTTP/1.1 c.d.
Przykład schematu http
http://my.host.pl:8080/index.php?z1=w1&z2=w2
 http: – schemat, rodzaj protokołu
 //my.host.pl – autoryzacja, nazwa hosta
 8080 – nr portu
 /index.php – ścieżka do zasobu
 z1=w1&z2=w2 – zapytanie
Protokół HTTP/1.1 c.d.
Metody protokołu HTTP
 GET – pobiera zasoby,
 HEAD – działa tak samo jak GET, ale zwraca
tylko sam nagłówek bez treści dokumentu,
 POST – przesłanie danych do serwera
 DELETE- żąda, aby serwer usunął zasób,
 OPTIONS – pozwala klientowi ustalić opcje
i/lub wymagania związane z danym zasobem
(np. listę dostępnych metod).
Protokół HTTP/1.1 c.d.
Nagłówki ogólnego przeznaczenia
 Cache-Control:


żądanie: no-cache|no-store – warunki
buforowania
odpowiedź: public|private – określa rodzaj
cache’a (wspólny, prywatny)
 Connection: keep-alive|close – typ połączenia
 Date: HTTP-date – data utworzenia
 Pragma: no-cache – informacje dla serwerów
pośredniczących
Protokół HTTP/1.1 c.d.
Nagłówki klienta
 Accept: typ/podtyp – akceptowane typy
danych
 Accept-Charset: alfabet – akceptowany
zestaw znaków
 Accept-Encoding: compress | gzip | deflate –
metoda kodowania
 Accept-Language: język – akceptowany język
 Host: nazwa-hosta[:port]
Protokół HTTP/1.1 c.d.
Nagłówki klienta c.d.
 If-Modified-Since: HTTP-date – jeśli
dokument został zmodyfikowany od data
 Range: bytes=początek-koniec – wybieramy
fragment dokumentu
 User-Agent: nazwa – informacje o kliencie
Protokół HTTP/1.1 c.d.
Nagłówki serwera
 Accept-Ranges: bytes | none – czy serwer
akceptuje żądania cześci dokumentu
 Location: URI – nowy adres zasobu
 Retry-After: HTTP-date | delta-miliseconds –
informuje po jakim czasie należy ponownie
pobrać zasób (razem z kodem 5xx lub 3xx)
 Server: product – informacje o sofcie po
stronie serwera
Protokół HTTP/1.1 c.d.
Pola zawartości
 Allow: GET, HEAD – dozwolone metody
 Content-Encoding: gzip – rodzaj kodowania
 Content-Language: en - język
 Content-Length: liczba – wielkość dokumentu
 Content-Range: początek-koniec/rozmiar –
pobrano bajty od początek do koniec, a
całość ma rozmiar rozmiar
Protokół HTTP/1.1 c.d.
Pola zawartości c.d.
 Content-Type: text/html; charset=ISO-8859-2
– typ zawartości dokumentu
 Expires: HTTP-date – moment, po którym
dokument jest już nieaktualny
 Last-Modified: HTTP-date – data ostatniej
modyfikacji dokumentu
Protokół HTTP/1.1 c.d.
Kody odpowiedzi
 1xx – informacyjne, żądanie zostało przyjęte
 2xx – pomyślne, żądanie zostały poprawnie
przetworzone
 3xx – przeadresowanie, w celu zakończenia
czynności trzeba podjąć dalsze kroki
 4xx – błędny URL lub inny błąd występujący
po stronie klienta
 5xx – błąd w pracy serwera
Protokół HTTP/1.1 c.d.
Przykładowa komunikacja
 Żądanie:
swiatowit:pawel:~> telnet www.ii.uni.wroc.pl 80
Trying 156.17.4.1...
Connected to swiatowit.ii.uni.wroc.pl.
Escape character is '^]'.
GET /~pawel/index.html HTTP/1.1
Host: www.ii.uni.wroc.pl
Connection: keep-alive
Protokół HTTP/1.1 c.d.
Przykładowa komunikacja c.d.
 I odpowiedź:
HTTP/1.1 200 OK
Date: Sat, 21 Feb 2004 19:34:11 GMT
Server: Apache/1.3.28 (Unix) mod_ssl/2.8.15
OpenSSL/0.9.6h PHP/4.3.4
Last-Modified: Tue, 08 Oct 2002 16:48:55 GMT
ETag: "bc6b-339-3da30c77"
Accept-Ranges: bytes
Content-Length: 825
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
<!-- Treść dokumentu -->