SlideShare a Scribd company logo
1 of 27
HTTP
Stipe Predanić
HTTP
HyperText transfer protokol
Osnova weba
Razvijao se od 1991 do 1997
Klijent – server arhitektura
Port 80
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
HTTP klijent server
ZAHTJEV
telnet na port 80
(HTTP request)
ODGOVOR
(HTTP response)
HTTP zahtjev/odgovor
Tekst formatiran u obliku
<start-line>
<message-headers>
<empty-line>
[<message-body>]
[<message-trailers>]
Oblik HTTP zahtjeva
<request-line>
<general-headers>
<request-headers>
<entity-headers>
<empty-line>
[<message-body>]
[<message-trailers>]
www.tvz.hr
GET / HTTP/1.1
Host: www.tvz.hr
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;
rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en,hr-HR,hr;q=0.9,en-gb;q=0.9,sr-
ME;q=0.9,sr;q=0.9,bg-BG;q=0.9,bg;q=0.9,nl-NL;q=0.8,nl;q=0.8,el-
GR;q=0.8,el;q=0.8,en-EN;q=0.8,ru-RU;q=0.7,ru;q=0.7,ja-
JP;q=0.7,ja;q=0.7,si-LK;q=0.7,si;q=0.6,de-DE;q=0.6,de;q=0.6,sr-
yu;q=0.6,zh-CN;q=0.6,zh;q=0.6,es-ES;q=0.5,es;q=0.5,fr-
FR;q=0.5,fr;q=0.5,cs-CZ;q=0.5,cs;q=0.4,sl-si;q=0.4,sl;q=0.4,uk-
UA;q=0.4,uk;q=0.4,bs-Latn;q=0.4,bs;q=0.3,ba-RU;q=0.3,ba;q=0.3,en-
uk;q=0.3,sr-cs@latn;q=0.3,bs-BA-Cyrl;q=0.2,en-ca;q=0.2,pl-
PL;q=0.2,pl;q=0.2,sr-RS;q=0.2,en-au;q=0.1,fr_FR.UTF-
8;q=0.1,fr_FR.UTF;q=0.1,sv-SE;q=0.1,sv;q=0.1,hr;q=0.1,en-
us;q=0.0,en;q=0.0
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Oblik HTTP odgovora
<status-line>
<general-headers>
<response-headers>
<entity-headers>
<empty-line>
[<message-body>]
[<message-trailers>]
www.tvz.hr
HTTP/1.1 200 OK
Date: Wed, 09 Mar 2011 09:50:51 GMT
Server: Apache/2.2.9
X-Powered-By: PHP/5.2.6-1+lenny9
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-
check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 3104
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=cp1250
<html>
<head>
<link rel="shortcut icon" href="favicon.ico">
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
REQUEST - tipovi
GET
POST
HEAD
OPTIONS
PUT, DELETE, TRACE, CONNECT, PATCH
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
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
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
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
Proxy?
Caching
Ugrađena podrška
− Cache-Control
− Expires
− Last-Modified
− Etag
Filtering
Blacklist
Po URL-u
Po HTML-u
− HTML parser provjerava sadržaj
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!
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: */*
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
HTTPS
HTTP secure = HTTP + SSL/TLS
Rad HTTP-a je isti, SSL ili TLS dolaze između
aplikacijskog i transportnog sloja i kriptiraju
podatke
HTTPS
https://www.facebook.com
Port 443
Prihvaćanje certifikata
− Self signed?
− Kupljen?
− https://letsencrypt.org/ (besplatno, automatizirano)
Programer web aplikacija ne primjećuje razliku
u načinu i stilu programiranja.
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
HTTP 1.0 / 1.1
1.1 ima i
Bolju podršku za kompresiju podataka
Perzistentnu konekciju
− Problem sa proxyima
Pipelining
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
Copyright xkcd.com
Iduće predavanje
 CSS3, HTML5
Važnije „programerske“ stvari
 PHP ponavljanje

More Related Content

More from Stipe Predanic

[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 Stipe Predanic
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOSStipe Predanic
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljačaStipe Predanic
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 Stipe Predanic
 
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) Stipe Predanic
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora Stipe Predanic
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova Stipe Predanic
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. Stipe Predanic
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. Stipe Predanic
 
Achieve the norm with Idiorm
Achieve the norm with IdiormAchieve the norm with Idiorm
Achieve the norm with IdiormStipe Predanic
 
Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.Stipe Predanic
 

More from Stipe Predanic (20)

[ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016 [ERRO] Predavanje: Prikaz podataka 1.12.2016
[ERRO] Predavanje: Prikaz podataka 1.12.2016
 
[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS[ERRO] Predavanje: RTOS
[ERRO] Predavanje: RTOS
 
[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača[ERRO] Predavanje: Porodice mikroupravljača
[ERRO] Predavanje: Porodice mikroupravljača
 
[ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051 [ERRO] Predavanje: 8051
[ERRO] Predavanje: 8051
 
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016) [ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
[ERRO] Predavanje: ulazi/izlazi na mikroupravljač (27.10.2016)
 
[ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora [ERRO] Predavanje: MARIE model procesora
[ERRO] Predavanje: MARIE model procesora
 
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova [ERRO] Predavanje: Ponavljanje digitalnih sklopova
[ERRO] Predavanje: Ponavljanje digitalnih sklopova
 
[ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita) [ERRO] Uvodno predavanje (pravila polaganja ispita)
[ERRO] Uvodno predavanje (pravila polaganja ispita)
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 12.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 10.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 8.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 7.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 5.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 4.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 3.
 
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1. [TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 1.
 
Achieve the norm with Idiorm
Achieve the norm with IdiormAchieve the norm with Idiorm
Achieve the norm with Idiorm
 
Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.Seminar foxoring - ožujak 2015.
Seminar foxoring - ožujak 2015.
 

[TVZ Računarstvo] Dinamičke web aplikacije, predavanje 2.

  • 2. HTTP HyperText transfer protokol Osnova weba Razvijao se od 1991 do 1997 Klijent – server arhitektura Port 80
  • 3.
  • 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
  • 5. HTTP klijent server ZAHTJEV telnet na port 80 (HTTP request) ODGOVOR (HTTP response)
  • 6. HTTP zahtjev/odgovor Tekst formatiran u obliku <start-line> <message-headers> <empty-line> [<message-body>] [<message-trailers>]
  • 8. www.tvz.hr GET / HTTP/1.1 Host: www.tvz.hr User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en,hr-HR,hr;q=0.9,en-gb;q=0.9,sr- ME;q=0.9,sr;q=0.9,bg-BG;q=0.9,bg;q=0.9,nl-NL;q=0.8,nl;q=0.8,el- GR;q=0.8,el;q=0.8,en-EN;q=0.8,ru-RU;q=0.7,ru;q=0.7,ja- JP;q=0.7,ja;q=0.7,si-LK;q=0.7,si;q=0.6,de-DE;q=0.6,de;q=0.6,sr- yu;q=0.6,zh-CN;q=0.6,zh;q=0.6,es-ES;q=0.5,es;q=0.5,fr- FR;q=0.5,fr;q=0.5,cs-CZ;q=0.5,cs;q=0.4,sl-si;q=0.4,sl;q=0.4,uk- UA;q=0.4,uk;q=0.4,bs-Latn;q=0.4,bs;q=0.3,ba-RU;q=0.3,ba;q=0.3,en- uk;q=0.3,sr-cs@latn;q=0.3,bs-BA-Cyrl;q=0.2,en-ca;q=0.2,pl- PL;q=0.2,pl;q=0.2,sr-RS;q=0.2,en-au;q=0.1,fr_FR.UTF- 8;q=0.1,fr_FR.UTF;q=0.1,sv-SE;q=0.1,sv;q=0.1,hr;q=0.1,en- us;q=0.0,en;q=0.0 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive
  • 10. www.tvz.hr HTTP/1.1 200 OK Date: Wed, 09 Mar 2011 09:50:51 GMT Server: Apache/2.2.9 X-Powered-By: PHP/5.2.6-1+lenny9 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post- check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 3104 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html; charset=cp1250 <html> <head> <link rel="shortcut icon" href="favicon.ico">
  • 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
  • 17. Proxy? Caching Ugrađena podrška − Cache-Control − Expires − Last-Modified − Etag Filtering Blacklist Po URL-u Po HTML-u − HTML parser provjerava sadržaj
  • 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
  • 22. HTTPS https://www.facebook.com Port 443 Prihvaćanje certifikata − Self signed? − Kupljen? − https://letsencrypt.org/ (besplatno, automatizirano) Programer web aplikacija ne primjećuje razliku u načinu i stilu programiranja.
  • 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
  • 27. Iduće predavanje  CSS3, HTML5 Važnije „programerske“ stvari  PHP ponavljanje