Predavanje iz Dinamičkih web aplikacija, 2. predavanje
Video: https://www.youtube.com/watch?v=4OCLWg6z6gk&list=PLYqeapOP_CtS0kbdbo_GXFgnS81JGAd8L&index=2
Tema: HTTP
Datum snimanja: 10.3.2016
4. HTTP klijent server
Stateless komunikacija
Originalno tranzitornog tipa
1 konekcija – 1 zahtjev
HTTP 1.1 omogućuje više zahtjeva po istoj
konekciji jer podržava perzistenciju i pipelining
Prenosi tekstualne podatke (HTTP 1.0 i 1.1)
HTML je tekstualni podatak, CSS također
Kako onda prenosi slike i datoteke?
Napredne opcije predviđene dizajnom
Kompresija, autentikacija, proxy
11. HTTP klijenti i serveri
• Svaki uređaj/program koji podržava takav
zadani oblik kroz TELNET protokol može biti
HTTP klijent ili server
• Npr. Arduino mikroupravljačka platforma
https://www.arduino.cc/en/Tutorial/WebServer
• Primjer jednostavnog web servera u mnogim
programskim jezicima
• https://rosettacode.org/wiki/Hello_world/Web_server
13. GET vs POST
GET
Primarno služi za dobivanje odgovora (stranica) sa
servera
Svi podaci vidljivi u URI-ju
− Sigurnosni problem?
− Duljina?
POST
Primarno služi za davanje informacija poslužitelju
Podaci nisu vidljivi jer se šalju u tijelu poruke
14. Kodiranje podataka GET/POST
Podaci kodirani u parovima
ulaz
Name: Jonathan Doe
Age: 23
Formula: a + b == 13%!
izlaz
Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D
%3D+13%25%21
15. URI
Uniform Resource Identifier
URL (Uniform Resource Locator) i URN (Uniform
Resource Name)
URL u obliku
scheme://domain:port/path?query_string#fragment_id
− http://racunarstvo.tvz.hr/index.php?pred=17868
− http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
− http://192.168.5.5:8123/polipo/config?
− ftp://ftp.carnet.hr/PROCITAJ.ME
16. HTTP response kodovi
1xx Informational
2xx Success
200 je osnovni i najčešći
3xx Redirection
Preusmjeravanje prometa iz bilo kojeg razloga
4xx Client Error
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
5xx Server Error
18. Autentikacija?
Ugrađena u HTTP protokol
GET /private/index.html HTTP/1.1
Host: localhost HTTP/1.1 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 311
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;
charset=ISO-8859-1">
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
GET /private/index.html HTTP/1.1
Host: localhost
Authorization: Basic
QWxhZGRpbjpvcGVuIHNlc2FtZQ==
NEKRIPTIRANO, ČISTI
TEKST u MIME64!
19. Kremšnite i čajni kolačići
Cookie
Spremanje podataka na klijentskoj strani u obliku
parova podataka
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value
Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT
(content of page)
GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: name=value; name2=value2
Accept: */*
20. Kolačići
Kolačići služe za
Održavanje sesija (server ne pamti podatke)
− Identifikacija korisnika za kasnije raspoznavanje (npr.
posjećene stranice ili stvari u košarici)
Personalizaciju
Praćenje korisnika
− Problem privatnosti
− Potrebno postavljati domene i datume isteka
− Rad s kolačićima stavlja dodatnu težinu na sigurnost
21. HTTPS
HTTP secure = HTTP + SSL/TLS
Rad HTTP-a je isti, SSL ili TLS dolaze između
aplikacijskog i transportnog sloja i kriptiraju
podatke
23. HTTP 1.0 / 1.1
HTTP 1.0 (1996) -> 1.1 (1997):
OPTIONS
− Klijent može reći serveru koje napredne opcije podržava
Cache
− 1.1 uvodi dodatne opcije za cacheiranje
Range request
− Pri skidanju velikih datoteka 1.0 nije mogao skidati samo
dio datoteke – što je važno za nastavak prekinutih
konekcija
24. HTTP 1.0 / 1.1
1.1 ima i
Bolju podršku za kompresiju podataka
Perzistentnu konekciju
− Problem sa proxyima
Pipelining
25. Nova verzija?
SPDY - Google
HTTP S&M (speed + mobility) - Microsoft
HTTP/2 (prije nazvan HTTP/2.0)
– baziran na SPDY-u, ratificiran u svibnju 2015.
– binarni protokol, podržava sve što i 1.1 s nekim
manjim dodacima (npr. push dodatnih podataka
za koje smatra kako bi browser mogao tražiti u
budućnosti)
– Negativno (ili pozitivno): većina browsera
podržava samo HTTPS verziju
– Do veljače 2016. 7% svjetskih siteova koristi
HTTP/2