Wielkie protokoły wielkich ludzi

Preview:

Citation preview

Wielkie protokoły wielkich ludzi

Uszanowanko!

Sponsorują:

TwórcaSir Timothy Berners-Lee● Brytyjski fizyk i programista● Absolwent Oxford● Twórca WWW● Przewodniczący World Wide Web Consortium (W3C)● Rycerz

Duck tape

Spis treści● Co to jest HTTP● Metody HTTP● Cookies● Nagłówki● Przykłady zapytań● Live demo

HTTP =

Hypertext Transfer Protocol

HTTP? Na co to komu?● Przesyłanie hipertekstu● Normalizacja sposobu komunikacji komputerów● Na żądanie klienta zwraca odpowiedź z serwera● Bezstanowy● port 80

Z czego składa się wiadomość?● [Metoda] [URI] [Protokół] (np. “GET / HTTP/1.0”)● Nagłówki● Pusta linia● Body (opcjonalnie)

Odpowiedź ma w pierwszej linii status (np. “HTTP/1.1 200 OK”).

Przykładowe zapytanie HTTP

Przykładowa odpowiedź HTTP

Metody HTTPGET, HEAD, PUT, POST, DELETE, OPTIONS, TRACE, CONNECT (1.0), PATCH

GET● Zapytanie o konkretny zasób sieciowy● Powinien tylko pobierać dane, bez zmiany stanu.● Zapytanie nie ma body

HEAD● Zapytanie o konkretny zasób sieciowy, bez zwracania jego

zwartości.● Powinien tylko pobierać dane, bez zmiany stanu.● Zapytanie i odpowiedź nie mają body.

PUT● Umieszczenie pełnej encji pod konkretnym URI (jeżeli już

istnieje zostanie nadpisany).● Niekeszowalne.

POST● Umieszczenie encji jako podwładnej konkretnemu URI (np. nowy

post na forum).

DELETE● … serio? ;-)● Zapytanie nie ma body● Niekeszowalne.

TRACE● Zwraca nam treść zapytania.● Możemy sprawdzić, czy kanał komunikacyjny jest spójny.● Zapytanie nie ma body.● Niekeszowalne.

OPTIONS● Zwraca nam listę metod HTTP, które są dozwolone na danym

URI● Zapytanie nie ma body.● Niekeszowalne.

CONNECT● Metoda używana do zestawiania tunelu (np. ssl) przez zwykly

protokół HTTP. ● Nie istnieje w HTTP 1.1 ● (i tak jest implementowana ponieważ taśma klejąca)● Niekeszowalne.

PATCH● Aktualizacja części encji, umieszczonej pod URI

Cookies?● Służą identyfikacji użytkownika● mogą przechowywać informacje o sesji● są wysyłane do serwera przy każdym zapytaniu● usuwają bez z “bezstanowości”.

Ustawianie cookieSerwer zwraca nagłówek set-cookie:

Set-Cookie:NID=e7617586147a456489a5de15d65409f9; expires=Sat, 12-Nov-2016 16:17:34 GMT; path=/; domain=.google.com; HttpOnly

Wysyłanie cookiesPrzeglądarka wysyła nagłówek:

cookie:NID=e7617586147a456489a5de15d65409f9

Sesje● Powiązanie kilku wiadomości w dialog● W praktyce realizowane poprzez ustawienie cookie● W przypadku PHP - phpsessid

Pragma: no-cache● HTTP/1.0● Prośba przeglądarki o zwrócenie aktualnej wersji dokumentu● Zdefiniowane wyłącznie dla zapytań!● Legacy, legacy, legacy

Cache-control w zapytaniach● Cache-control: public tylko publiczne cache● Cache-control: private tylko prywatne cache● Cache-control: no-cache nie wolno cachować● Cache-control: no-store nie wolno archiwizować

Cache-control w odpowiedziach● Cache-control: no-store nie wolno zapisać na dysk● Cache-control: no-cache nie zapisuj do cache● Cache-control: must-revalidate trzeba sprawdzać aktualność ● Cache-control: max-age=1 cache na sekundę

Expires● Expires: Thu, 01 Dec 1994 16:00:00 GMT● jeżeli max-age jest zdefiniowany, to Expires jest nadpisywany,

nawet jeżeli jest bardziej restrykcyjny

HTTP return codes● 1xx - informacyjny (Continue)● 2xx - sukces (OK/CREATED/ACCEPTED)● 3xx - przekierowanie (301 MOVED PERMANENTLY/302 FOUND)● 4xx - błąd klienta (PAYMENT REQUIRED/NOT

FOUND/FORBIDDEN)● 5xx - bład serwera (INTERNAL SERVER ERROR)

Connection: keep-alive● zezwala na wiele zapytań HTTP w jednym połączeniu TCP w

HTTP/1.0● w HTTP/1.1 działa od strzała

“Pierwsza zasada live demo: nigdy nie rób live demo”

~ Tyler Durden, Fight Club

Teraz będzie live demo....

Dziękuję za uwagę.