ćwiczenia 1 - Instytutu Informatyki UJ

Transkrypt

ćwiczenia 1 - Instytutu Informatyki UJ
PSI — Protokół HTTP
+ wstęp do przedmiotu
Kraków, 10 październik 2014
mgr Piotr Rytko
Wydział Matematyki i Informatyki UJ
Co będzie na zajęciach
Całość ćwiczeń podzielona została na trzy główne bloki:
• Blok 1 - o protokole HTML, sposób działania, kody odpowiedzi HTML i nagłówki,
trochę o HTML 5 i CSS 3 oraz narzędziach javaskryptowych - jQuery;
• Blok 2 - python DJango lub PHP, praca na języku skryptowym;
• Blok 3 - java webowa: servlety i JSP, wzorce projektowe DAO i MVC na serwletach i
java beanach.
Każdy z bloków kończy się projektem zaliczeniowym.
Projekty są punktowane po 10 pt., każdy projekt ma swój deadline, po przekroczeniu
którego max ilość punktów do zdobycia za niego spada co tydzień o 50% i jest
zaokrąglana w dół (int, z obcięciem po przecinku), czyli odpowiednio 5, 2, 1, 0 pt.
Oddanie projektu, nawet za 0 pt. jest warunkiem koniecznym do uzyskania zaliczenia.
Podczas ćwiczeń możemy zrobić jedno kolokwium.
Obecność na zajęciach jest obowiązkowa, dopuszczalne są max 2 nieobecności.
Co będzie dziś
• Protokół HTTP,
• sekwencja połączenia HTTP,
• typy żądań HTTP,
• kody statusów zwracanych przez protokół HTTP,
• nagłówki HTTP,
• lista kilku nagłówków przesyłanych do serwera,
• lista kilku nagłówków przesyłanych do klienta.
Protokół HTTP
Komunikacja w sieci WWW odbywa się za pośrednictwem internetu i jego protokołów
komunikacyjnych.
Protokół jest zbiorem reguł, które ustalają formaty przesyłanych danych i
normują ich transmisję.
Opisują także jak ma się zachować komputer gdy wystąpią błędy w transmisji danych.
Protokół HTTP umożliwia przekazanie informacji zarówno o wynikach poszukiwania
obiektu jak i jego transmisji. Zaraz po zakończeniu transmisji, połączenie jest
zamykane.
Jeśli w zapytaniu niema podanego portu, domyślnie przyjmowany jest port nr 80.
Protokół HTTP działa zwyczajowo na protokole TCP/IP, ale może równie dobrze działać
na dowolnym innym protokole strumieniowym.
Sekwencja połączenia protokołu HTTP
• Utworzenie połączenia - tworzone jest połączenie TCP/IP (np na porcie nr 80) z
serwerem WWW,
• wysłanie żądania - żądanie pobrania pliku, lub wysłanie plików na serwer,
• odpowiedź serwera - serwer zwraca komunikat z odpowiedzią, zawierający kod
statusu oraz ewentualne dane,
• zakończenie połączenia - serwer zamyka połączenie TCP/IP.
Typy żądań HTTP
GET - dane przesyłane są w adresie URI,
POST - dane przesyłane w ciele zapytania (niejawnie), z reguły do przesyłania danych
z formularza na serwer,
DELETE - przesyła żądanie usunięcia wskazanego zasobu,
OPTIONS - zwraca metody obsługiwane przez serwer dla wskazanego zasobu,
HEAD - pytanie o informacje na temat zasobu, bez pobierania danych,
TRACE - działa jak echo zwracając otrzymane zapytanie wysłane przez klienta
(umożliwia sprawdzenie czy zapytanie nie zostało zmodyfikowane przez
serwery pośrednie),
PUT - uaktualnia wskazane zasoby,
PATCH - podobnie jak PUT uaktualnia wskazane zasoby, ale nie koniecznie w całości,
CONNECT - zamienia połączenie na tunel TCP/IP (stosowane np. do tunelowania
połączenia SSL (HTTPS) przez niezabezpieczone serwery proxy).
Kody statusów zwracane przez protokół HTTP
• 1xx - kody informacyjne,
100 - Continue
110 - Connection Timeout
101 - Switching Protocol
111 - Conection Refused
102 - Processing
201 - Created
204 - No content
207 - Multi-Status
202 - Accepted
205 - Reset Content
208 - Already Reported
301 - Moved Permanently
304 - Not Modified
307 - Temporary Redirect
302 - Found
305 - Use Proxy
308 - Permanent Redirect
• 2xx - kody powodzenia,
200 - Ok
203 - Non-Authoriative Information
206 - Partial Content
• 3xx - kody przekierowania,
300 - Multiple Choices
303 - See Other
306 - Switch proxy (no longer used)
• 4xx - kody błędu klienta,
400
403
406
409
412
415
418
-
Bad Request
Forbiden
Not Acceptable
Conflict
Precondition Failed
Unsuported Media Type
I’m a teapot
401
404
407
410
413
416
420
-
Unauthorized
402
Not Found
405
Proxy Authentication Required 408
Gone
411
Request Entity Too Large
414
Requested Range Not Satisfable417
Enchance Your Calm
-
Payment Required
Method Not Allowed
Request Timeout
Length Required
Request URI too Long
Exception Failed
501
504
507
510
599
-
Not Implemented
Gateway Timeout
Insufficient Storage
Not Extended
Network connect timeout error
-
Bad Gateway
HTTP Version Not Supported
Loop Detected
Network Authentication Required
• 5xx - kody błędu serwera.
500
503
506
509
598
-
Internal Server Error
Server Unavaliable
Variant Also Negotiates
Bandwidth Limit Exceeded
Network read timeout error
502
505
508
511
Nagłówki HTTP
Nagłówki znajdują się na początku komunikacji, zaraz po linii zapytania/odpowiedzi.
Nagłówki składają się z par rozdzielonych znakiem ‘:’
identyfikator: wartość
Każdy kolejny nagłówek jest oddzielony od poprzedniego znakiem końca linii. Można
jednak kontynuować wypisywanie wartości nagłówka w nowej linii poprzez zaznaczenie
tego za pomocą spacji lub tabulatora na pierwszym miejscu nowej linii, gdyż nowe
nagłówki zaczynają się identyfikatorem zawierającym na pierwszym miejscu nowej linii
inny znak różny od ‘whitespace’.
Każdy nagłówek może mieć wiele wartości, są one wtedy oddzielana przecinkami.
Koniec sekcji nagłówków jest oznaczony poprzez pustą linię (pierwszym znakiem w linii
jest znak końca linii).
Przydatnym hackiem na wyłuskanie sekcji nagłówków z odpowiedzi jest wpisanie
poniższego kodu do konsoli inspektora.
var url = $.ajax({type:'GET',url:window.location.pathname,success: function() { alert
(url.getAllResponseHeaders());}});
Lista kilku nagłówków przesyłanych do serwera
Accept — akceptowalny typ danych,
Accept-Charset — akceptowalny typ kodowania znaków,
Accept-Encoding — akceptowalne kodowanie (gzip, deflate, etc.),
Authorization — autoryzuje kwalifikacje dla autentykacji HTTP,
Chache-Control — określa mechanizm trzymania Chache dla tej transmisji,
Connection — określa jaki rodzaj połączenia preferuje użytkownik (np. keep-alive),
Cookie — ciasteczka ;D,
Content-Type — określa typ MIME dla ciała transmisji (w przypadku POST i PUT),
Date — data i czas wysłania zapytania,
Host — adres i port na którym nasłuchuje serwer,
Max-Forwards — określa maksymalną ilość przesłań dalej przez serwery proxy,
Upgrade — prosi serwer o upgrade do innego protokołu,
User-Agent — przesyła informacje o programie tworzącym zapytanie do serwera,
Warning — informacja o możliwości wystąpienia błędów w ciele zapytania.
Lista kilku nagłówków przesyłanych do serwera
Allow — dozwolone metody połączenia,
Chache-Control — określa politykę trzymania Chache (max-age=x [x - sekundy]) ,
Connection — opcje połączenia,
Content-Encoding — kodowanie używane w odpowiedzi,
Content-Length — długość odpowiedzi w oktetach (8-bit),
Content-Location — alternatywny adres zwracanych danych,
Content-Disposition — daje możliwość wywołania okna dialogowego dla pobrania pliku,
Content-Type — typ MIME dla zwracanych danych,
Date — data i czas wysłania odpowiedzi,
Expires — data i czas kiedy wysłana odpowiedź zostanie uznana za przeterminowaną,
Location — używane do przekierowania lub gdy jest tworzony nowy zasób,
Server — nazwa serwera wysyłającego odpowiedź,
Set-Cookie — ustawia ciasteczka na stronie klienta,
Transfer-Encoding — typ kodowania transferu aby zachować bezpieczeństwo danych,
WWW-Authenticate — określa typ autentykacji wymagany dla odbioru danych.
Dziękuję za uwagę.