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