HTTP zaglavlja

С Википедије, слободне енциклопедије

HTTP zaglavlja (engl. HTTP Header, polja zaglavlja) su komponente zaglavlja poruke zahteva i odgovora u Hypertext Transfer Protocol (HTTP). Oni definišu operativne parametre jedne HTTP transakcije.

Polja zaglavlja se prenose nakon zahteva ili odgovora linije, prve linije poruke. Heder polja su kolonom predvojeni parovi ime - vrednost u formatu nizova čistog teksta, obustavljeni povratkom na početak reda (CR) i spuštanje za red niže (LF) niza karaktera. Kraj polja zaglavlja ukazuje prazno polje, što je dovelo do prenosa dva uzastopna CR-LF para. Dugi redovi mogu da se sastoje od više linija, neprekidne linije su označene prisustvom prostora (SP) ili horizontalnim tabulatorom (HT) kao prvim karakterom u sledećoj liniji.[1] Nekoliko polja takođe mogu da sadrže komentare, sto može da bude ignorisano od strane softvera.[2] Unutrašnji niz polja je standardizovan od strane Internet Engineering Task Force (IETF) u RFC 2616 i drugim ažuriranjima i dodatnim dokumentima, i mora da se sprovodi od strane svih HTTP kompatibilnih protokol imlementacija.Dodatna imena polja i dozvoljene vrednosti mogu da budu definisane svakom aplikacijom.

Stalni registar zaglavlja i spremišta privremenih registracija se održava od strane IANA.

Mnoge vrednosti polja mogu sadržati kvalitetan (q) par ključne vrednosti, navodeći da koristi težinu u korist pregovora.[3]

ne postoje ograničenja za ime svakog polja zaglavlja ili vrednost ili broj zaglavlja u samom standardu. Međutim većina servera, klijenata i proksi softvera nameće neka ograničenja zbog praktičnih i bezbednosnih razloga. Na primer Apache 2.3 server uslovljava velićinu svakog zaglavlja na veličinu od 8190 bajta, i može da bude najvise 100 zaglavlja u pojedinačnom zahtevu.

Zahtevi[уреди | уреди извор]

IME POLJA OPIS PRIMER
Accept vrste sadržaja koje su prihvatljive za odgovor Accept: text/plain
Accept-Charset grupa karaktera koji su prihvatljivi Accept-Charset: utf-8
Accept-Encoding prihvatljive šeme za kompresiju vidi http kompresija Accept-Encoding: gzip, deflate
Accept-Language prihvatljivi ljudski jezici za odgovor Accept-Language: en-US
Accept-Datetime prihvatljiva verzija u vremenu Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
Authorization potvrda lozinka za http autentičnost Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control koristi se da naznaci direktive koje moraju biti izvršene od strane svih skladišnih

mehanizama duž lanca zahtev/odgovor

Cache-Control: no-cache
Connection koju vrstu veze će korisnik - agent preferirati Connection: keep-alive
Cookie http kolačići prethodno poslati od strane servera sa Set-Cookie (ispod) Cookie: $Version=1; Skin=new;
Content-Length dužina tela zahteva u oktetima (8-bit bytes) Content-Length: 348
Content-MD5 Base64-binarnih lozinki MD5 zbira sadržaja tela zahteva Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Type MIME vrsta tela zahteva (koriscena sa POST i PUT zahtevima ) Content-Type: application/x-www-form-urlencoded
Date datum i vreme kada je poruka poslata Date: Tue, 15 Nov 1994 08:12:31 GMT
Expect ukazuje da su određena ponasanja servera zahtevana od strane klijenata Expect: 100-continue
From email adresa korisnika pravi zahtev From: user@example.com
Host Ime domena servera (za virtuelan hosting) i TCP port broj na kom server sluša. Broj

portova može bti izostavljen ako je port standardan port za servisne zahteve. Obavezan od HTTP/1.1. Iako je ime domena naznačeno kao osetljivo na veličinu slova, nije precizirano da li sadržaj host polja treba tumačiti na način nezavisan od veličine slova, a u praksi neke implementacije virtual hostinga tumače sadrzaj host polja na nacin ne zavisan od veličine slova.

Host: en.wikipedia.org:80

Host: en.wikipedia.org

If-Match Izvodi akciju samo ako klijent dobije entitet koji se poklapa sa istim entitetom na serveru.

Ovo je uglavnom za metode kao PUT da samoažurira resurse ako nisu bili izmenjeni od kada ih je korisnik zadnje ažurirao.

If-Match: "737060cd8c284d8af7ad3082f209582d"
If-Modified-Since Dozvoljava 304 nije promenjeno da bude vraćeno ako je sadrzaj nepromenjen If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
If-None-Match Dozvoljava 304 nije promenjeno da bude vraćeno ako je sadrzaj nepromenjen If-None-Match: "737060cd8c284d8af7ad3082f209582d"
If-Range Ako je entitet nepromenjen, pošalji mi deo (delove) koji mi nedostaju, inače pošalji mi ceo

nov entitet.

If-Range: "737060cd8c284d8af7ad3082f209582d"
If-Unmodified-Since Pošalji odgovor samo ako entitet nije menjan neko odredjeno vreme. If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Max-Forwards Određuje broj puta koliko poruka moze biti prosleđena kroz proksije ili prevodilac protokola

(Gateway).

Max-Forwards: 10
Origin Inicira zahtev za cross-origin resource sharing (CORS)(pita server za 'Access-Control-Allow-Origin'

odgovor zaglevlje). (CORS)je mehanizam koji dozvoljava web strani da napravi XMLHttpRequests za drugi domen.

Origin: https://web.archive.org/web/20151104123413/http://www.example-social-network.com/
Pragma Ubacuje specifična zaglavlja koja mogu imati različite efekte bilo gde duž lanca zahtev - odgovor. Pragma: no-cache
Proxy-Authorization Odobrenje lozinki za povezivanje na proksi. Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range Zahteva samo deo entiteta. Bitovi se broje od nule. Range: bytes=500-999
Referer Ovo je adresa prethodne internet stranice sa koje je usledio link do trenutno zahtevane stranice.

(Reč “referrer” je pogrešno napisana u RFC kao i vecina implementacija).

Referer: http://en.wikipedia.org/wiki/Main_Page
TE Tansfer lozinki koje koje korisnički agent voljan da prihvati: mogu da se koriste iste vrednosti

kao za odgovor zaglavlje Transfer-Encoding, plus "prikolice" vrednost (povezano sa "komad" metodom prenosa) da izveste server da očekuje da primi dodatna zaglavlja ("prikolice"), nakon poslednjeg, nulte veličine, komad.

TE: trailers, deflate
Upgrade Pita server da nadogradi drugi protokol. Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent Korisnisnički agent niz korisnickog agenta User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101Firefox/12.0
Via Obaveštava server proksija kroz koje je zahtev bio poslat. Via: 1.0 fred, 1.1 example.com (Apache/1.1)
Warning Generalno upozorenje o mogućim problemima sa telom entiteta. Warning: 199 Miscellaneous warning

Uobicajna nestandarna zaglavlja zahteva[уреди | уреди извор]

Nestandarna polja zaglavlja su bila konvecijalno obelezena prefiksom -X ispred imena polja. Medjutim, ova konvencija je postala zastarela u junu 2012 zbog neprijatnosti izazvanih kada su nestandarna zaglavlja postala standardna.Na primer X-Gzip i Gzip su sada oba podrzana zaglavlja za kompresovane http zahteve i odgovore.

IME POLJA OPIS PRIMER
X-Requested-With Uglavnom se koristi za identifikaciju Ajax zahteva. Većina JavaScript okvira šalje ovo zaglavlje

sa vrednošću XMLHttpRequest.

X-Requested-With: XMLHttpRequest
DNT Zahteva od internet aplikacije da onemogući pracenje Ovo je Mozilina verzija X-Do-Not-Track

zaglavlja (od Firefox 4.0 Beta 11 ). Safari i IE9 takodje imaju podršku za ova zaglavlja. 7.marta 2011 nacrt predloga je predat IETF-u. W3C Tracking Protection Working Group proizvodi specifikaciju.

DNT: 1 (Do Not Track Enabled)

DNT: 0 (Do Not Track Disabled)

X-Forwarded-For De facto standard za utvrdjivanje IP adrese klijenta povezuje se sa serverom putem httpproksi

servera ili load b

X-Forwarded-For: client1, proxy1, proxy2

X-Forwarded-For: 129.78.138.66, 129.78.64.103

X-Forwarded-Proto De facto standard za utvrđivanje porekla protokola http zahteva, od kada reverse proksi (load

balancer) može komunicirati sa internet serverom koristeći http čak iako je zahtev reverse proksi serveru https.

X-Forwarded-Proto: https
Front-End-Https Nestandarno zaglavlje koje koriste Microsoft aplikacije i load-balanseri. Front-End-Https: on
X-ATT-DeviceId Omogućava lakšu analizu od strane MakeModel/Firmware koji se nalazi u User-Agent String u

AT&T uređaja.

x-att-deviceid: MakeModel/Firmware
X-Wap-Profile Linkovi ka XML datotekama na internetu sa punim opisom i detaljima o uređaju koji se trenutno

povezuje. Na primer, na desnoj strani je XML datoteka za AT&T Samsung Galaxy S2.

x-wap-proДатотека: http://wap.samsungmobile.com/uaprof/SGH-I777.xml
Proxy-Connection Realizovana kao nerazumevanje http specifikacija. Obično zbog grešaka u realizaciji ranih http

verzija. Ima potpuno istu funkcionalnost kao standardni priključak zaglavlju.

Proxy-Connection: keep-alive

Odgovori[уреди | уреди извор]

IME POLJA OPIS PRIMER
Access-Control-Allow-Origin Navodi koji internet sajtovi mogu da pristupe cross-origin resource sharing Access-Control-Allow-Origin: *
Accept-Ranges Koje vrste parsijalnih opsega sadrzaja server podržava Accept-Ranges: bytes
Age Doba u koje je objekat bio u proxy cache u sekundi Age: 12
Allow Važeće akcije za određeni resurs. Uoptebljva se za 405 metod Nije dopušteno. Allow: GET, HEAD
Cache-Control Govori svim mehanizmima skladištenja od servera do korisnika da li može da se skladišti ovaj

objekat. Meri se u sekundi.

Cache-Control: max-age=3600
Connection Opcije koje su poželjne za povezivanje. Connection: close
Content-Encoding Tip lozinki koji se koristi za podatke. Videti HTTP kompresiju. Content-Encoding: gzip
Content-Language Jezik na kome je sadržaj. Content-Language: da
Content-Length Dužina tela odgovora u oktetima. (8-bit bajta) Content-Length: 348
Content-Location Alternativna lokacija za vraćene podatke. Content-Location: /index.htm
Content-MD5 Baza 64 binarnih lozinki MD5 zbir sadržaja odgovora. Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Disposition Mogusnost da izađe "File Download" okvir za dijalog za poznati MIME sa binarnim formatom ili

predlog za ime datoteke za dinamički sadrzaj. Navodnici su neophodni za specijalne karaktere.

Content-Disposition: attachment; filename="fname.ext"
Content-Range Gde u punom telu poruke ovaj deo pripada. Content-Range: bytes 21010-47021/47022
Content-Type MIME vrsta ovog sadržaja. Content-Type: text/html; charset=utf-8
Date Datum i vreme kada je poruka bila poslata. Date: Tue, 15 Nov 1994 08:12:31 GMT
ETag Identifikator za određenu verziju izvora, često za funkcije za sažimanje. ETag: "737060cd8c284d8af7ad3082f209582d"
Expires Daje datum/vreme posle koga se odgovor smatra zastarelim. Expires: Thu, 01 Dec 1994 16:00:00 GMT
Last-Modified Poslednje promenjen datum za traženi objekat u RFC 2822 formatu. Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT
Link Koristi se da izrazi otkucanu vezu sa drugim izvorom , gde je tip odnosa definisan od strane

RFC 5988

Link: </feed>; rel="alternate"
Location Koristi se u preusmeravanju, ili kada je napravljen novi izvor. Location: http://www.w3.org/pub/WWW/People.html
P3P Ovo zaglavlje je trebalo da postavi P3P politiku u formi P3P:CP="your_compact_policy". Međutim,

P3P nisu podržani, vecina pretraživača ih nije nikada u potpunosti implementirala, dosta internet sajtova postavlja ovo zaglavlje sa lažnim tekstom politike, to je bilo dovoljno da prevari pretraživače za postojanje P3P politike i da dozvolu za kolačiće trece vrste(kolačići postavljeni sa različitim domenom od onog koji je pokazan u address bar-u).

P3P: CP="This is not a P3P policy! See
Pragma Implementira specifična zaglavlja koja mogu biti bilo gde duž lanca zahtev - odgovor. Pragma: no-cache
Proxy-Authenticate Zahteva proveru identiteta za pristup proksiju. Proxy-Authenticate: Basic
Refresh Koristi se u preusmeravanju ili kad je novi resurs kreiran.Ovaj refresh preusmerava posle

5 sekundi. Ovo je vlasničko, nestandarno dodatno zaglavlje uvedeno od strane Netscape -a, i podrzavaju ga mnogi pretraživači.

Refresh: 5; url=http://www.w3.org/pub/WWW/People.html
Retry-After Ako je neki entitet privremeno nedostupan, ovo ukazuje korisniku da proba ponovo posle

izvesnog vremena.

Retry-After: 120
Server Ime servera Server: Apache/2.4.1 (Unix)
Set-Cookie Http kolačić Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Status Http status odgovora. Status: 200 OK
Strict-Transport-Security HSTS politika koja obaveštava http korisnika koliko dugo da skladišti samo https politiku i

da li ovo ukljucuje poddomene.

Strict-Transport Security: max-age=16070400; includeSubDomains
Trailer Trailer polje opšte vrednosti ukazuje da je dat set polja zaglavlja predstavljen u trailer-u

poruke lozinke sa chunked transfer-coding. (To je mehanizam transfera podataka u verziji 1.1 Http u kom se podaci šalju u seriji "chunks"-ova.)

Trailer: Max-Forwards
Transfer-Encoding Forma lozinki koja se koristi za bezbedan transfer entiteta do korisnika.Trenutno definisane

metode su: chunked, kompresija, deflate ("zlib" format with "deflate" kompresijom ), gzip, identitet.

Transfer-Encoding:chunked
Vary Pokazuje nizvodnim proksijima kako da podese buduća zaglavlja zahteva da odluči da li da se

skladišten odovor koristi umesto zahtevanja novog koji je poreklom sa servera.

Vary: *
Via Obaveštava korisnika o proxy-ju preko koje je odgovor poslat. Via: 1.0 fred, 1.1 example.com (Apache/1.1)
Warning Opšte upozorenje o mogucim problemima sa telom entiteta. Warning: 199 Miscellaneous warning
WWW-Authenticate Ukazuje na šemu identifikacije koja treba da se koristi za pristup zahtevanom entitetu. WWW-Authenticate: Basic

Uobicajna nestandardna zaglavlja odgovora[уреди | уреди извор]

IME POLJA OPIS PRIMER
X-Frame-Options Clickjacking zaštita: "deny" - nema vraćanja unutar okvira, "sameorigin" - nema vraćanja ako

se poreklo ne poklapa.

X-Frame-Options: deny
X-XSS-Protection Cross-site scripting (XSS) filter (vrsta slabosti u bezbednosti racunara koja se tipično nalazi

u internet aplikacijama)

X-XSS-Protection: 1; mode=block
Content-Security-Policy,

X-Content-Security-Policy, X-WebKit-CSP

Content Security Policy definicija. (to je koncept bezbednosti računara, da spreči Cross-site

scripting i povezane napade)

X-WebKit-CSP: default-src 'self'
X-Content-Type-Options Samodefinisana vrednost, "nosniff", sprečava Internet Explorer od MIME šunjanja odgovora od

deklarisanog tipa sadržaja. Ovo važi i za Google Chrome, kada se skidaju dodaci.

X-Content-Type-Options: nosniff
X-Powered-By Specificira tehnologiju (kao ASP.NET, PHP, JBoss) koja podržava aplikaciju (verzije detalja su

često u X-Runtime, X-Version, ili X-AspNet-Version)

X-Powered-By: PHP/5.4.0
X-UA-Compatible Preporučuje željeni motor vraćanja (često backward-compatibility mode) koji treba da se koristi

da se prikaže sadržaj. Takođe se koristi da aktivira Chrome Frame u Internet Explorer-u.

X-UA-Compatible: IE=EmulateIE7

X-UA-Compatible: IE=edge X-UA-Compatible: Chrome=1

Efekti izabranih polja zaglavlja[уреди | уреди извор]

Izbegavanje skladistenja[уреди | уреди извор]

Ako internet server odgovara sa Cache-Control: no-cache internet pretraživač ili drugi sistem skladištenja (središnji proksiji) ne sme da koristi odgovor da zadovolji naredne odgovore bez prethodne provere sa originalnog servera (ovaj proces se naziva validacija). Ovo polje zaglavlja je deo HTTP verzije 1.1 , i neki pretraživači i skladišta ga ignorišu. Može da bude simuliran postavljanjem Expires HTTP verzija 1.0 vrednosti polja zaglavlja u vreme koje je ranije od vremena odziva.

Obratite pažnju da no-cache ne upućuje pretraživače ili proksije o tome da li da skladišti ili ne skladišti sadržaj. To samo govori da pretraživači i proksiji treba da provere skladišteni sadržaj sa serverom pre nego što ga upotrebe (to se radi korišćenjem if-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match atributa pomenutih ranije ). Slanjem no-cache vrednosti nalaže pretraživaču ili proksiju da ne koriste sadržaje skladišta samo na osnovu "kriterijuma svežine" sadržaja skladišta. Drugi uobičajen način da se spreči prikazivanje starog sadržaja bez validacije je Cache-Control: max-age=0. Ovo upućuje korisničkog agenta da je sadržaj zastareo i da treba da bude potvrđen pre upotrebe.

Polje zaglavlja Cache-Control: no-store ima za cilj da uputi aplikaciju pretraživača da primeni najbolje napore da ga ne napiše na disk (tj. da ga ne kešira ).

Zahtev da se resurs ne treba keširati nije garancija da neće biti upisan na disku. Konkretno, HTTP/1.1 definicija pravi razliku između istorijskih magacina i skladišta. Ukoliko korisnik kreće nazad na prethodnu stranicu pretraživač vam može još uvek prikazivati stranicu koja je unešena na disku u istorijskom magacinu. Ovo je ispravno ponašanje prema specifikaciji. Mnogi korisnički agenti pokazuju različita ponašanja u učitavanju stranica sa istorijskog magacina ili keša u zavisnosti da li je protokol HTTP ili HTTPS.

Pragma: no-cache i Cache-Control: no-cache polje zaglavlja je HTTP/1.0 namenjeno za upotrebu u zaglavlju zahteva takodje. To je naćin da pretraživač kaže serveru i bilo kom središnjem skladištu da zeli novu verziju izvora, a ne da server govori pretraživaču da ne skladišti resurs. Pragma: no-cache je specifična implementacija , i neki korisnički agenti obraćaju pažnju na ovo zaglavlje u odgovorima, ali HTTP/1.1 RFC posebno upozorava na oslanjanje na ovo ponašanje.

Reference[уреди | уреди извор]

  1. ^ „HTTP/1.1: Notational Conventions and Generic Grammar”. W3.org. Приступљено 13. 3. 2012. 
  2. ^ „HTTP/1.1: Header Field Definitions”. W3.org. Приступљено 13. 3. 2012. 
  3. ^ „RFC 2616 §3.9”. W3.org. Приступљено 13. 3. 2012. 

Spoljašnje veze[уреди | уреди извор]