HTTP fejlécek

Ez a cikk áttekintést nyújt a HTTP -fejlécekről .
Az egyes fejlécek leírását a HTTP-fejlécek listája című témakörben találja .

A HTTP - fejlécek egy HTTP -üzenetben lévő karakterláncok, amelyek kettősponttal elválasztott név-érték párost tartalmaznak .  A fejlécek formátuma követi az ARPA szöveges hálózati üzenetfejlécek általános formátumát (lásd RFC 822 ). A fejléceket legalább egy üres sorral el kell választani az üzenet törzsétől.

Minden címsor négy fő csoportra oszlik:

  1. Általános fejlécek ( rus. Fő fejlécek ) – a klienstől és a szervertől érkező üzenetekben szerepelniük kell.
  2. Kérelem fejlécek ( rus. Kérelemfejlécek ) – csak az ügyfélkérésekben használatos.
  3. Válaszfejlécek ( rus. Response headers ) – csak a szervertől érkező válaszokhoz.
  4. Entitásfejlécek ( orosz. Entitásfejlécek ) – az üzenetminden entitását kísérik.

Ebben a sorrendben ajánlott a fejléceket elküldeni a címzettnek.

Általános formátum

Az értéket több sorra tervezik elhelyezni (sortörés). A törés jelzéséhez legalább egy szóköz karakternek jelen kell lennie a következő sor elején.

Az azonos paraméternevű, de eltérő értékű fejlécek csak akkor kombinálhatók egybe, ha a mező értéke vesszővel elválasztott lista. Minden más esetben a távolabbi címsorok értékeinek át kell fedniük az előzőeket. Ezért a proxyknak nem szabad megváltoztatniuk a fejlécek sorrendjét az üzenetekben. Ilyenkor általában nem számít a lista elemeinek sorrendje.

Példa többsoros értékekkel és azonos fejlécnevekkel (megjegyzendő kis- és nagybetűk és szóközök):

tartalomtípus: szöveg/html; charset=windows-1251 Engedélyezés: GET, HEAD Tartalom hossza: 356 ENGEDÉLYEZÉS: GET, OPCIÓK Tartalom hossza: 1984

Az átalakítás és értelmezés helyes kompakt változata:

Tartalom típusa: text/html;charset=windows-1251 Engedélyezés: GET, HEAD, OPTIONS Tartalom hossza: 1984

Ebben az esetben tilos a 356-os Content-Length értéket elfogadni. Az Allow értékek kombinálásakor, hogy ne veszítse el a szemantikai jelentését, az első mező végére vessző került, és az értelmetlenül megkettőzött "GET" elem eltávolítva.

A fejlécekben használt struktúrák

Dátum és idő

DateA , Expires, Last-Modified, If-Modified-Since, fejlécekben csak a dátum szerepel If-Unmodified-Since. A dátum megjelenhet a fejlécekben If-Rangeés a Warning.

A HTTP három formátumot használ:

Az RFC 7231 arra utasítja az adatok címzettjeit, hogy készüljenek fel a dátum- és időbélyegzők feldolgozására mindhárom formátumban, és csak az általuk preferált formátumban hozzanak létre dátum- és időbélyegzőket.

Az idő mindig a GMT időzónára ( UTC+0 ) van megadva. Az évszám négy számjeggyel van írva. A nap, az óra, a perc és a másodperc két karakterre nullázva van kitöltve. Az angol nyelvben hárombetűs szabványos rövidítéseket használnak a hónap és a hét napjának megnevezésére.

A hét hétfőtől kezdődő napjai: Mon, Tue, Wed, Thu, Fri, Sat, Sun.

Hónapok januártól decemberig: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec.

A PHP a gmdate() függvényt használja a helyi idő GMT-re konvertálásához. Példák dátumok generálására HTTP-fejlécekhez:

// Aktuális dokumentum generálás dátuma: fejléc ( "Dátum: " . gmdate ( DateTime :: RFC850 )); // A megadott fájl módosításának dátuma: $fp = 'data/my-foo.txt' ; // fejlécfájl elérési útja ( "Utoljára módosított: " . gmdate ( "D, d MYH:i:s" , filemtime ( $fp )) . " GMT" ); // A dokumentumnak egy órán belül meg kell változnia: header ( "Lejár: " . gmdate ( "D, d MYH:i:s" , time () + 3600 ) . " GMT" ); // 3600 - az aktuális pillanathoz viszonyított másodpercek száma.

Bájttartományok

Ha tartalomtöredékekkel dolgozik , a bájttartományokat speciális fejlécekben használjuk .  Megadhat bennük egy vagy több töredéket, vesszővel elválasztva őket " ". A tartományok a fejlécekben és a . A fejléc csak a mértékegységeket tartalmazza. ,RangeContent-RangeAccept-Ranges

A bájt tartományokban a mértékegységek nevét kell az elején feltüntetni, majd a " =" szimbólumot. Jelenleg az egységeken kívül bytesmás nincs használatban. A „ ” szimbólum mögött =maguk a tartományok találhatók. Mindegyik természetes szám kötőjellel elválasztott -párja , vagy nulla és természetes szám. Az első elem a kezdő bájtot, a második pedig a záró bájtot határozza meg. A tartományok számozása nullától kezdődik.

Előfordulhat, hogy a kezdő vagy a záró bájt nem adható meg. Az utolsó bájt hiányában úgy tekintjük, hogy a tartalom kezdő bájtjától a végéig tartó töredékről beszélünk. Ha nincs eleje, akkor a tartalom végétől kért bájtok száma a vége bájtszám.

Ha az első bájt nagyobb, mint az utolsó, akkor a tartomány szintaktikailag érvénytelennek minősül .  A szintaktikailag érvénytelen értékű tartományokat tartalmazó fejlécmezőket figyelmen kívül hagyja. Ha az első bájt kívül esik az erőforrás hatókörén, akkor a tartomány figyelmen kívül marad. Ha az utolsó bájt a határon kívül van, akkor a tartomány a végére csonkolódik.

A bájttartományokból álló blokk akkor tekinthető végrehajthatónak, ha tartalmaz legalább egy elérhető tartományt. Ha az összes tartomány helytelen vagy kívül esik az erőforrás hatókörén, akkor a szervernek üzenetet kell küldenie az állapottal 416(A kért tartomány nem teljesíthető).

Példák (a teljes erőforrás 5000 bájt):

  • bytes=0-255 — 0 és 255 bájt közötti töredék.
  • bytes=42-42 - egy 42. bájt kérése.
  • bytes=4000-7499,1000-2999 - két töredék. Mivel az első a határokon kívül esik, a rendszer " "ként értelmezi 4000-4999.
  • bytes=3000-,6000-8055 - az elsőt " "-ként értelmezi 3000-4999, a másodikat pedig figyelmen kívül hagyja.
  • bytes=-400,-9000 - az utolsó 400 bájt (4600-tól 4999-ig), a második pedig a tartalomkerethez igazodik (0-tól 4999-ig), ami a teljes kötetet töredékként jelöli.
  • bytes=500-799,600-1023,800-849 - a kereszteződésekben a tartományok egybe vonhatók (500-tól 1023-ig).

Címsorok

Címsorok HTML-ben

A HTML jelölőnyelv lehetővé teszi a szükséges HTTP-fejlécértékek belső beállítását <HEAD>a címke használatával <META>. Ebben az esetben a fejléc neve az attribútumban http-equiv, az érték pedig - in content. A fejléc értékét szinte mindig Content-Typea megadott kódolással állítjuk be, hogy elkerüljük a szöveg böngésző általi megjelenítésével kapcsolatos problémákat. A fejléc értékének feltüntetése sem felesleges Content-Language:

< html > < head > < meta http-equiv = "Content-Type" content = "text/html;charset=windows-1251" > < meta http-equiv = "Content-Language" content = "hu" > ...

Lásd még