Antete HTTP

Acest articol oferă o prezentare generală a antetelor HTTP .
Pentru o descriere a antetelor specifice, consultați Lista antetelor HTTP .

Antetele HTTP sunt șiruri dintr-un mesaj HTTP care conțin o pereche nume-valoare, separată de două puncte .  Formatul antetelor urmează formatul general al antetelor mesajelor de rețea text ARPA (vezi RFC 822 ). Anteturile trebuie separate de corpul mesajului prin cel puțin o linie goală.

Toate titlurile sunt împărțite în patru grupuri principale:

  1. Anteturi generale ( rus. Anteturi principale ) - trebuie incluse în orice mesaj de la client și server.
  2. Anteturi de solicitare ( rus. Anteturi de solicitare ) - utilizate numai în cererile clienților.
  3. Antete de răspuns ( rus. Anteturi de răspuns ) - numai pentru răspunsurile de la server.
  4. Anteturi de entitate ( rusă. Anteturi de entitate ) - însoțesc fiecare entitate a mesajului.

Aceasta este ordinea în care se recomandă trimiterea antetelor către destinatar.

Format general

Se plănuiește plasarea valorii pe mai multe linii (întrerupere de linie). Pentru a indica o pauză, cel puțin un caracter alb trebuie să fie prezent la începutul liniei următoare.

Anteturile cu aceleași nume de parametri, dar cu valori diferite pot fi combinate într-una singură numai dacă valoarea câmpului este o listă separată prin virgulă. În toate celelalte cazuri, valorile titlurilor mai îndepărtate trebuie să se suprapună pe cele anterioare. Prin urmare, proxy-urile nu ar trebui să modifice ordinea antetelor dintr-un mesaj. În acest caz, ordinea elementelor listei de obicei nu contează.

Un exemplu cu valori pe mai multe linii și nume de antet identice (notați majuscule și spații):

tip de conținut: text/html; set de caractere=windows-1251 Permite: GET, HEAD Lungimea conținutului: 356 PERMITĂ: OBȚINE, OPȚIUNI Durata conținutului: 1984

Versiunea compactă corectă a transformării și interpretării este:

Tip de conținut: text/html;charset=windows-1251 Permite: GET, HEAD, OPTIONS Durata conținutului: 1984

În acest caz, este ilegal să se accepte o valoare Content-Length de 356. La combinarea valorilor Allow, pentru a nu pierde sensul semantic, a fost adăugată o virgulă la sfârșitul primului câmp și elementul „GET” duplicat fără sens. a fost eliminat.

Structuri utilizate în anteturi

Data și ora

Doar data este indicată în rubricile Date, Expires, Last-Modified, If-Modified-Since. If-Unmodified-SinceData poate apărea în anteturi If-Rangeși Warning.

HTTP folosește trei formate:

RFC 7231 instruiește destinatarii datelor să fie pregătiți să proceseze marcajele de dată și oră în toate cele trei formate și să genereze mărci de dată și oră numai în formatul preferat.

Ora este întotdeauna specificată pentru fusul orar GMT ( UTC+0 ). Anul este scris în patru cifre. Ziua, ora, minutul și secunda sunt completate cu zero la două caractere. Abrevierile standard din trei litere în limba engleză sunt folosite pentru numele lunii și zilei săptămânii.

Zilele săptămânii începând de luni: Mon, Tue, Wed, Thu, Fri, Sat, Sun.

Luni din ianuarie până în decembrie: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec.

PHP folosește funcția gmdate() pentru a converti ora locală în GMT. Exemple de generare a datelor pentru antetele HTTP:

// Data curentă de generare a documentului: antet ( "Data: " . gmdate ( DateTime :: RFC850 )); // Data modificării fișierului specificat: $fp = 'data/my-foo.txt' ; // calea către fișierul antet ( „Ultima modificare: „ . gmdate ( „D, d MYH:i:s” , ora fișierului ( $fp )) . „ GMT” ); // Documentul ar trebui să se schimbe într-o oră: antet ( "Expire: " . gmdate ( "D, d MYH:i:s" , time () + 3600 ) . " GMT" ); // 3600 - numărul de secunde relativ la momentul curent.

Intervalele de octeți

Când lucrați cu fragmente de conținut , intervalele de octeți sunt utilizate în anteturi speciale .  Puteți specifica fie un fragment, fie mai multe fragmente în ele, separându-le prin virgule „ „. Intervalele se aplică în anteturi și . Antetul listează numai unitățile de măsură. ,RangeContent-RangeAccept-Ranges

În intervalele de octeți, denumirea unităților de măsură trebuie indicată la început, urmată de simbolul " =". Momentan, în afară de unități, bytesnu sunt folosite altele. În spatele simbolului „ ” =se află gamele în sine. Fiecare dintre ele este o -pereche de numere naturale separate prin cratime, sau zero și un număr natural. Primul element specifică octetul de început, iar al doilea specifică octetul de sfârșit. Numerotarea în intervale începe de la zero.

Este posibil ca octetul de început sau de sfârșit să nu fie specificat. În lipsa ultimului octet, se consideră că vorbim despre un fragment de la octetul de început până la sfârșitul conținutului. Dacă nu există un început, atunci numărul octetului de sfârșit este considerat numărul de octeți solicitați de la sfârșitul conținutului.

Dacă primul octet este mai mare decât ultimul, atunci intervalul este considerat invalid din punct de vedere sintactic .  Câmpurile de antet care conțin intervale cu valori invalide din punct de vedere sintactic sunt ignorate. Dacă primul octet este în afara domeniului de aplicare pentru resursă, atunci intervalul este ignorat. Dacă ultimul octet este în afara limitelor, atunci intervalul este trunchiat până la sfârșit.

Un bloc de intervale de octeți este considerat executabil dacă conține cel puțin un interval disponibil. Dacă toate intervalele sunt incorecte sau în afara domeniului de aplicare al resursei, atunci serverul ar trebui să returneze un mesaj cu starea 416(Interval solicitat nu este satisfăcător).

Exemple (întreaga resursă are 5000 de octeți):

  • bytes=0-255 — fragment de la 0 la 255 de octeți inclusiv.
  • bytes=42-42 - o solicitare pentru un al 42-lea octet.
  • bytes=4000-7499,1000-2999 - două fragmente. Deoarece primul este în afara limitelor, este interpretat ca „ 4000-4999".
  • bytes=3000-,6000-8055 - primul este interpretat ca " 3000-4999", iar al doilea este ignorat.
  • bytes=-400,-9000 - ultimii 400 de octeți (de la 4600 la 4999), iar al doilea este ajustat la cadrul de conținut (de la 0 la 4999) denotând întregul volum ca fragment.
  • bytes=500-799,600-1023,800-849 - la intersecții, intervalele pot fi combinate într-unul singur (de la 500 la 1023).

Titluri

Titluri în HTML

Limbajul de marcare HTML vă permite să setați intern valorile de antet HTTP necesare <HEAD>folosind eticheta <META>. În acest caz, numele antetului este specificat în atribut http-equiv, iar valoarea - în content. Valoarea antetului este aproape întotdeauna setată Content-Typecu codificarea specificată pentru a evita problemele cu afișarea textului de către browser. De asemenea, nu este de prisos să indicați valoarea antetului Content-Language:

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

Vezi și