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 | 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
[уреди | уреди извор]- ^ „HTTP/1.1: Notational Conventions and Generic Grammar”. W3.org. Приступљено 13. 3. 2012.
- ^ „HTTP/1.1: Header Field Definitions”. W3.org. Приступљено 13. 3. 2012.
- ^ „RFC 2616 §3.9”. W3.org. Приступљено 13. 3. 2012.
Spoljašnje veze
[уреди | уреди извор]
- RFC 4229: HTTP Header Field Registrations. December 2005 (contains a more complete list of HTTP headers)
- RFC 2616: IETF HTTP/1.1 RFC
- RFC 2965: IETF HTTP State Management Mechanism RFC
- HTTP/1.1: Header Field Definitions
- HTTP/1.1 headers from a web server point of view
- HTTP Request Header Viewer
- HTTP Response Header Viewer - Retrieves the HTTP response headers of any domain.
- HTTP Header Viewer with Google App Engine
- Internet Explorer and Custom HTTP Headers - EricLaw's IEInternals - Site Home - MSDN Blogs
- crwlr.net - HTTP Header index
- HTTP Header with Privacyinfo - Display your HTTP request and response headers