Wielkie protokoły wielkich ludzi
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ę.