Uvod v HTTP Flashcards
HTTP (Hyper
- Osnovni spletni protokol, ki omogoča <b>pravila komunikacije</b> med spletnimi strežniki in odjemalci(spletni brskalniki)
- Najpogostejsa verzija je <b>HTTP/1.1</b> zdj večino strani migrira na <b>HTTP/2.0</b>
- Komunikacija poteka preko ti. <b> Zahtevkov (request)</b>, kjer brskalniki pošlejo zahtevek z vsebino, strežnik se nato odzove.
HTTP in TCP/IP
- <b>TCP (Transmission Control Protocol)</b> je osnova za komunikacijo preko interneta
- HTPP je <b>aplikacijski protokol</b>, ki temelji na protokolu <b>TCP</b>
- TCP omogoča funkcionalnosti, ki so pomembne za HTTP:
- <b>Vzpostavitev povezave</b>
- <b>Persistentnost povezave</b>
- <b>Mehanizem, ki prepreči izgubo paketkov</b>
- HTTP zahtevek je lahko sestavljen iz več TCP paketkov
- Da lahko imamo več strežniških aplikacij na TCP protokolu, jih ločujemo preko <b>vrat(port)</b>, ki so oštevilčena od 1 do 65535
<b> HTTP prevzeto uporablja vrata 80</b>
HTTP in TCP/IP (poudarek na IP)
- TCP v osnovi deluje skupaj z <b> IP protokolom</b>, ki omogoča da je vsak računalnik na internetu enolično določena z <b> IP naslovom</b>
- IP naslov verzije 4 (<b>IPV4</b>) je sestavljen iz štirih mest <b> [0-255]. [0-255]. [0-255]. [0-255] </b>
- to je premalo in se je uvedel <b>IPV6</b> hkrati pa spletni strežnik gostuje več spletnih strani na 1 IP naslovu na različnih domenah
- IP naslov 127.0.0.1 vedno kaže na lokalni računalnik odjemalca (domena <b>localhost</b>)
Glava HTTP na odjemalčevi strani
- HTTP zahtevek je sestavljen iz <b> glave</b> in <b> telesa</b> na odjemalčevi strani zadostuje samo <b> glava</b>
- glavni parametri, ki sestavljajo glavo <b>HTTP zahtevka od odjemalca </b>(brskalnika)
- <b>brsta, pot zahtevka in HTTP verzija</b> npr GET /index.html HTTP/1.1
- Host(povemo domeno strani) npr. www.um.si
- Accept-language (povemo kateri jezik preferiramo) npr. en-us
- User-Agent( povemo kateri brskalnik imamo) npr. Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
- Referer (povemo od kod prihajajmo): http://ww.google.com
velikokrat pomemben samo prvi zahtevek drugi so obcijski
HTTP GET
- Najbolj pogost HTTP zahtevek je <b> GET</b>, kjer sporočimo da želimo pridobiti vsebino določene datoteke
- GET v brskalnik vpišemo naslov ciljne spletne strani
- GET zahtevki so tudi <b> prevzeto pri vseh spletnih povezavah</b> ( pri el. <a>, <img></img>,..)</a>
HTTP GET(telnet)
_ HTTP zahtevke lahko pošljemo tudi preko poljubnega orodja, ki omogoča komunikacijo preko TCP protokola (npr. netcat, telnet, telputty)
- telnet Uporablja za oddaljen terminal preko TCP protokola, lahko pa ga uporabljamo za testiranje drugih TCP storitev
Glava HTTP na strežniški strani
- Strežnik <b> po zahtevku odjemalca odvrne odziv</b>, ki je sestavljen iz <b>glave</b> in <b>telesa</b>, telo vsbuje <b>html stran</b>
• Pogosti parametri HTTP glave na srežniški strani:
– (HTTP-VERZIJA STATUSNA-KODA). Npr HTTP/1.1 200 OK
– Date (Datum na strežniku): npr. Sat, 20 Nov 2004 07:16:26 GMT
– Server (vrsta in verzija strežniške programske opreme): npr. Apache/2.2.14 (Win32)
– Last-modified (datum zadnje modifikacije dokumenta):
npr. Sat, 20 Nov 2004 06:16:26 GMT
– Content-type (tip podatkov): npr. text/html
Glava HTTP -> statusne kode
vsaka glava HTTP zahtevka na strežniški strani se začne s <b> tromestno statustno kodo</b>, ki pove ali je bil zahtevek uspesen ali ne
– 1xx (Informational): Strežnik še obdeluje podatke.
– 2xx (Success): Zahtevek je bil uspešen.
– 3xx (Redirection): Dodatna akcija je zahtevana s strani odjemalca.
– 4xx (Client Error): Napaka na strani zahtevka odjemalca.
– 5xx (Server Error): Napaka na strani strežnika (kljub pravilnemu zahtevku)
Primeri najbolj pogostih statusnih kod:
- 200 OK: zahtevek je bil uspešen, sledi spletna stran ali druga datoteka.
- 400 Bad Request: napačni zahtevek s strani odjemalca.
- 401 Authentication Required: potrebna avtentikacija s strani odjemalca.
- 403 Forbidden: odjemalec nima dostopa do dane datoteke.
- 404 Not Found: dana datoteka ni bila najdena.
- 500 Internal Server Error: interna napaka na strežniku.
Ostali HTTP zahtevki:
- HEAD: dobimo samo glavo s strani strežnika, brez telesa.
- POST: pošiljanje podatkov na strežnik (npr. preko HTML forme).
- DELETE: brisanje določenih podatkov na strežniku.
- OPTIONS: dobimo katere HTTP zahtevke strežnik podpira
POST ali GET ?
- Z zahtevkom GET lahko tudi pošiljamo podatke na strežnik v poizvedbenega niza.
– V tem primeru se poizvedbeni niz (query string) začne z ‘?’, parametri so ločeni s ‘&’,
vrednost parametrov pa so določene z ‘=‘
POST:
- podatki so lahko v binarni obliki
- v URL naslovu so skriti podatki
- GET je omejen , POST ni omejitve
HTML forme ter GET/POST zahtevki
z <b>Action</b> povemo a gre za GET al za POST
Pri POST zahtevkih se v glavo HTTP doda “Content-type: application/x-www-form-urlencoded” si čimer povemo,
da so POST parametri v obliki poizvedbenega niza.
uvod v HTTP 2.0
bistvena razlika med HTTP 2.0 in HTTP 1.0 je da podpira več zahtevkov na asinhroni način (<b>multipleksiranje</b>)
pri HTTP 1.1 se zahtevki pošiljajo <b>sinhrono</b>( čakanje na odgovora strežnika)
UVOD v HTTPS
- Hypertext Transfer Protocol Secure (HTTPS), omogoča <b>asimetrično šifriranje</b> vsebine HTTP prometa med odjemalcem in strežnikom
- dani promet ne more biti prestrežen na poti
- za šifriranje se uporabi <b>TLS(Transport Layer Security)</b> ppred leti se je pa uporabljal <b>SSL(Secure Sockets Layer)</b>
- zaupanje se določi z uporabo <b>verig certifikatov</b>
- danes večina spletnih strani privvzeto uporablja HTTPS
HTTP piškotki
- Originalno uporabljen za shranjevanje podatkov od nastavitev <b>seje spletne strani</b>
- danes se zlorablja za <b>oglaševanje</b>
- strežniške aplikacije nastavijo piškotke v glavi HTTP zahtevka
3rd party piškotki
1st party piškotki izhajajo iz iste domene katero obiskujemo in so praviloma vklopljeni
3rd party piškotki so vsi. piškotki od drugih domen od katerih pristopamo sekundarno
- klasično se uporablja za sledenje in analitiko nad uporabniki
- uporabiniku se določi <b>id</b>
Spletni sledilci (web trackers)
Poleg 3rd party piškotkov uporabljajo naprednejše tehnike identifikacije uporabnika (web fingerprinting)
AJAX(Asynchronous JavaScript and XML)
AJAX je <b>asinhrona funkcionalnost</b> vrajena v JavaScript, ki omogoča asinhrone klice <b>sprožitev HTTP zahtevkov</b> preko JavaScript. Prva verzija 2006
- Glavna prednost AJAX-a je pošiljanje zahtevkov po tem ko se je spletna stran že naložila
AJAX klicemo preko instance objekta <b>XMLHttpRequest</b> podprte metode: open(HTTP zahtevek, URL, zastavica za asinhronost) abort() – prekličemo zahtevek getAllResponseHeaders() send() send(‘parametri v poizvedbenem nizu’) setRequestHeader()
AJAX
Kličemo preko instance objekta XMLHttpRequest
Preko metode <b>onreadystatechange </b>nastavimo <b>povratno funckijo</b>, ki se sproži ob prejetju odziva s
strežnika (ne čakamo na odziv)
this.status
this.responseText
this.readyState
AJAX primer uporabe
Uporabimo <b>API</b>
AJAX primer uporabe (fetch)
promise
Namesto XMLHttpRequest lahko uporabimo novejši ukaz <b>fetch</b>, ki je implementiran kot obljuba(<b>promise</b>) pri tem lahko odziv pretvorimo v JSON objekt premo metode <b>json()</b>
Cross-origin resource sharing (CORSE)
Pri oddaljenih zahtevkih preko AJAX ne moremo dostopati do drugih domen, ki se razlikujejo po
imenu od naše trenutne domene
CORS
Pri asinhronih zahtevkih (npr AJAX) je običajno še poslan dodatni zahtevek <b>OPTION</b>, ki preveri, če strežnik sprejema zahtevke od zunaj
zaradi varnostnih razlogov kot je <b>ponarejanje HTTP zahtev od zunanje strani</b>
Strežnik se odzove v HTTP glavi s paramtri Access-Control-Allow, ki nam povejo s katerih domen
praviloma prejema zahtevke (prejema jih v vsakem primeru) ter vrsta zahtevkov
Na podlagi CORS odziva se brskalnik odloči, če bo zahtevek blokiral ali ne.