1. od zera do bohatera
Marek Stawiasz
Paweł Apanasewicz
2. O czym będziemy mówić
HTTP
HTTPS, WebDAV, SPDY
DNT, HSTS, HTLS
AJAX, Same Origin Policy, CORS
3. OK, więc co to takiego ten HTTP?
1. Hypertext Transfer Protocol
2. protokół warstwy aplikacji według modelu OSI
3. bazuje na TCP
4. nasłuchuje na porcie 80 (wersja szyfrowana na porcie 443)
5. jest protokołem tekstowym
6. jest protokołem bezstanowym
4. Dawno, dawno temu...
Pierwszy dokument o HTTP
ukazał się w 1991 roku
Czyli 21 lat temu!
To prehistoria jeśli chodzi
Internet
A życie wtedy było dużo prostsze
5. REWOLUCJA ROZPOCZĘŁA SIĘ
HTTP w pierwszej swojej
wersji 0.9 posiadał tylko
jedną metodę – GET*
* daj mi ten dokument
6. A w praktyce
Jak mówi klient (przeglądarka)?
GET /index.html HTTP/1.1
Host: www.example.com
UserAgent: Mozilla/5 (X11;Ubuntu;Linux) Firefox 16
Cookie: ala=makota
Accept: text/html
AcceptLanguage: enUS
7. A w praktyce
Jak mówi serwer?
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (RedHat/Linux)
Etag: "3f80f1b63e1cb03b"
ContentLength: 438
Connection: close
ContentType: text/html; charset=UTF8
Czterysta trzydzieści osiem bajtów odpowiedzi...
8. A w praktyce
Najczęściej spotykane kody odpowiedzi serwera
200 OK
201 Created
202 Accepted
204 No Content
404 Not Found
206 Partial Content
301 Moved Permanently
304 Not Modified
400 Bad Request
403 Forbidden
405 Method Not Allowed
500 Interal Server Error
9. A w praktyce
Co jeszcze może HTTP:
pobierać dokument GET
przesyłać dane POST
zapytać o nagłówki HEAD
przesyłać pliki na serwer PUT
kasować pliki na serwerze DELETE
spytać serwer o możliwości OPTIONS
i inne: TRACE, CONNECT
10. A w praktyce
Siła drzemie... w nagłówkach
w standardzie HTTP 1.1 otrzymujemy:
31 nagłówków zapytania
34 nagłówków odpowiedzi
dodatkowo poza standardem:
7 powszechnie stosowanych nagłówków zapytania
5 powszechnie stosowanych nagłówków odpowiedzi
11. A w praktyce
Siła drzemie... w nagłówkach
Serwer Klient
Server Host
Date User-Agent
Expires Accept-Language
Vary Accept-Encoding
Content-Language Accept
Content-Encoding Referer
Content-Type Set-Cookie
Location X-Forwarded-For
Cookie
Cache-Control
12. A w praktyce
Siła drzemie... w nagłówkach
XPoweredBy: Unicorns
XPoweredBy: Rats in your basement
XPoweredBy: Elves
XRecruitng: Like HTTP headers? Come write ours:
booking.com/jobs
XRecruiting: If you’re reading this, maybe you should
be working at Zappos instead. Check out jobs.zappos.com
17. BEZPIECZEŃSTWO
HSTS – HTTP Strict Transport Security
StrictTransportSecurity: maxage=31536000;
includeSubDomains
ALE:
nagłówek ten musi zostać przesłany poprzez HTTPS
z zaufanym certyfikatem inaczej MUSI zostać
zignorowany!
działa wszędzie już od dawna Firefox, Chrome,
Opera... tylko nie w Internet Explorerze!
18. BEZPIECZEŃSTWO
DNT: Do Not Track
DNT: 1
Obsługiwany przez WSZYSTKIE przeglądarki!
Użytkownik ŚWIADOMIE musi zaznaczyć iż nie chce być
śledzony.
Internet Explorer 10 łamie tą zasadę, wysyła DNT
domyślnie!
19. BEZPIECZEŃSTWO
CORS: Cross Origin Resource Sharing
Pomaga w problemach z regułą Same Origin Policy
w wywołaniach XHR:
Klient:
Origin: http://www.serwer.com
Serwer:
AccessControlAllowOrigin: http://serwer.com/
20. BEZPIECZEŃSTWO
CORS: Cross Origin Resource Sharing
Domyślnie nie są przesyłane informacje
uwierzytelniające (ciasteczka, autoryzacja,
certyfikaty SSL)
AccessControlAllowCredentials: true
W Internet Explorer z CORS korzystamy poprzez obiekt
XDomainRequest. IE nie daje JAKIEJKOLWIEK możliwości
przesyłania informacji uwierzytelniających.
25. WYDAJNOŚĆ
HTLS – HTTP Live Streaming
Technologia opracowana przez Apple
i zaimplementowana w QuickTime oraz iPhone.
Plik do przesłania dzielony jest na wiele małych
części.
Części te przesyłane są na samym początku transmisji
pliku m3u8.
29. POZA PRZEGLĄDARKĄ
WebDAV – Web Distributed Authoring & Versioning
Nowe komendy:
PROPFIND
PROPPATCH
MKCOL
COPY
MOVE
LOCK
UNLOCK
30. POZA PRZEGLĄDARKĄ
WebDAV – Web Distributed Authoring & Versioning
Daje możliwości praktycznie pełnego systemu plików
poprzez protokół HTTP!
W Microsoft Windows już od wersji 98 jako Web Folders
W systemach Linux czy Mac OSX możliwe jest
podmontowanie zasobów WebDAV.
Wykorzystywany przez SVN.