HTTP-headere

Denne artikel giver et overblik over HTTP -headere .
For en beskrivelse af specifikke overskrifter, se Liste over HTTP-overskrifter .

HTTP - headere er strenge i en HTTP -meddelelse, der indeholder et kolonsepareret navn-værdi-par .  Formatet på overskrifterne følger det generelle format for ARPA -tekstnetværksmeddelelsesoverskrifter (se RFC 822 ). Overskrifter skal adskilles fra meddelelsesteksten med mindst én tom linje.

Alle overskrifter er opdelt i fire hovedgrupper:

  1. Generelle overskrifter ( rus. Hovedoverskrifter ) - skal inkluderes i enhver besked fra klienten og serveren.
  2. Request Headers ( rus. Request headers ) - bruges kun i klientanmodninger.
  3. Response Headers ( rus. Response headers ) - kun for svar fra serveren.
  4. Entity Headers ( russisk. Entity Headers ) - ledsager hver enhed i meddelelsen.

Dette er den rækkefølge, det anbefales at sende overskrifterne i til modtageren.

Generelt format

Det er planlagt at placere værdien på flere linjer (linjeskift). For at angive en pause skal der være mindst ét ​​mellemrumstegn i begyndelsen af ​​næste linje.

Overskrifter med de samme parameternavne, men forskellige værdier, kan kun kombineres til én, hvis feltværdien er en kommasepareret liste. I alle andre tilfælde skal værdierne af de fjernere overskrifter overlappe de foregående. Derfor bør proxyer ikke ændre rækkefølgen af ​​overskrifter i en meddelelse. I dette tilfælde er rækkefølgen af ​​elementerne på listen normalt ligegyldig.

Et eksempel med værdier med flere linjer og identiske overskriftsnavne (bemærk store og små bogstaver og mellemrum):

indholdstype: tekst/html; charset=windows-1251 Tillad: FÅ, HOVED Indholdslængde: 356 TILLAD: FÅ, MULIGHEDER Indholdslængde: 1984

Den korrekte kompakte version af transformationen og fortolkningen er:

Indholdstype: text/html;charset=windows-1251 Tillad: GET,HEAD,OPTIONS Indholdslængde: 1984

I dette tilfælde er det ulovligt at acceptere en indholdslængde-værdi på 356. Ved kombination af Tillad-værdierne, for ikke at miste semantisk betydning, blev der tilføjet et komma til slutningen af ​​det første felt og det meningsløst duplikerede "GET"-element blev fjernet.

Strukturer brugt i overskrifter

Dato og klokkeslæt

Kun datoen er angivet i overskrifterne Date, Expires, Last-Modified, If-Modified-Since, If-Unmodified-Since. Datoen kan vises i overskrifter If-Rangeog Warning.

HTTP bruger tre formater:

RFC 7231 instruerer modtagere af data om at være forberedt på at behandle dato- og tidsstempler i alle tre formater og kun at generere dato- og tidsstempler i deres foretrukne format.

Tidspunktet er altid angivet for GMT -tidszonen ( UTC+0 ). Årstal er skrevet med fire cifre. Dag, time, minut og sekund er nulpolstret til to tegn. Standardforkortelser på tre bogstaver på engelsk bruges til navnene på måneden og ugedagen.

Ugedage fra mandag: Mon, Tue, Wed, Thu, Fri, Sat, Sun.

Måneder fra januar til december: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec.

PHP bruger funktionen gmdate() til at konvertere lokal tid til GMT. Eksempler på generering af datoer for HTTP-headere:

// Aktuel dokumentgenereringsdato: header ( "Dato: " . gmdate ( DateTime :: RFC850 )); // Ændringsdato for den angivne fil: $fp = 'data/my-foo.txt' ; // sti til header -fil ( "Sidst ændret: " . gmdate ( "D, d MYH:i:s" , filemtime ( $fp )) . " GMT" ); // Dokumentet formodes at ændre sig om en time: header ( "Udløber: " . gmdate ( "D, d MYH:i:s" , tid () + 3600 ) . " GMT" ); // 3600 - antallet af sekunder i forhold til det aktuelle øjeblik.

Byteområder

Når du arbejder med indholdsfragmenter , bruges byte-intervaller i specielle overskrifter .  Du kan angive enten et fragment eller flere fragmenter i dem, adskille dem med kommaer " ". Områder gælder i overskrifter og . Overskriften viser kun måleenhederne. ,RangeContent-RangeAccept-Ranges

I byte-områder skal navnet på måleenhederne angives i begyndelsen, efterfulgt af symbolet " =". På nuværende tidspunkt, bortset fra enheder, bytesanvendes ingen andre. Bag “ ” symbolet =er selve intervallerne. Hver af dem er et bindestreg-separeret -par naturlige tal, eller nul og et naturligt tal. Det første element angiver startbyten, og det andet angiver slutbyten. Nummerering i intervaller starter fra nul.

Start- eller slutbyten er muligvis ikke angivet. I mangel af den sidste byte anses det for, at vi taler om et fragment fra startbyten til slutningen af ​​indholdet. Hvis der ikke er nogen start, tages slutbytenummeret som antallet af bytes, der anmodes om fra slutningen af ​​indholdet.

Hvis den første byte er større end den sidste, betragtes området som syntaktisk ugyldigt .  Overskriftsfelter, der indeholder områder med syntaktisk ugyldige værdier, ignoreres. Hvis den første byte er uden for omfanget af ressourcen, ignoreres området. Hvis den sidste byte er uden for grænserne, afkortes området til slutningen.

En blok af byteområder betragtes som eksekverbar, hvis den indeholder mindst et tilgængeligt område. Hvis alle områderne er forkerte eller uden for ressourcens omfang, skal serveren returnere en meddelelse med status 416(anmodet område kan ikke opfyldes).

Eksempler (hele ressourcen er 5000 bytes):

  • bytes=0-255 — fragment fra 0 til 255 byte inklusive.
  • bytes=42-42 - en anmodning om en 42. byte.
  • bytes=4000-7499,1000-2999 - to fragmenter. Da den første er uden for grænserne, fortolkes den som " 4000-4999".
  • bytes=3000-,6000-8055 - den første tolkes som " 3000-4999", og den anden ignoreres.
  • bytes=-400,-9000 - de sidste 400 bytes (fra 4600 til 4999), og den anden er justeret til indholdsrammen (fra 0 til 4999), der angiver hele volumen som et fragment.
  • bytes=500-799,600-1023,800-849 - ved kryds kan områderne kombineres til ét (fra 500 til 1023).

Overskrifter

Overskrifter i HTML

HTML -markeringssproget giver dig mulighed for at indstille de nødvendige HTTP-headerværdier internt <HEAD>ved hjælp af tagget <META>. I dette tilfælde er headernavnet angivet i attributten http-equivog værdien -in content. Overskriftsværdien indstilles næsten altid Content-Typemed den angivne kodning for at undgå problemer med visning af tekst i browseren. Det er heller ikke overflødigt at angive overskriftsværdien Content-Language:

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

Se også