HTTP-rubriker

Den här artikeln ger en översikt över HTTP- rubriker .
För en beskrivning av specifika rubriker, se Lista över HTTP-rubriker .

HTTP - rubriker är strängar i ett HTTP -meddelande som innehåller ett kolonseparerat namn-värdepar .  Formatet på rubrikerna följer det allmänna formatet för ARPA -textnätverksmeddelanderubriker (se RFC 822 ). Rubriker måste separeras från meddelandetexten med minst en tom rad.

Alla rubriker är indelade i fyra huvudgrupper:

  1. Allmänna rubriker ( rus. Huvudrubriker ) - måste inkluderas i alla meddelanden från klienten och servern.
  2. Request Headers ( rus. Request headers ) - används endast i klientförfrågningar.
  3. Response Headers ( rus. Response headers ) - endast för svar från servern.
  4. Entitetsrubriker ( ryska. Entitetsrubriker ) - åtföljer varje entitet i meddelandet.

Detta är den ordning som det rekommenderas att skicka rubrikerna till mottagaren.

Allmänt format

Det är planerat att placera värdet på flera rader (radbrytning). För att indikera en brytning måste minst ett blanksteg finnas i början av nästa rad.

Rubriker med samma parameternamn men olika värden kan bara kombineras till ett om fältvärdet är en kommaseparerad lista. I alla andra fall måste värdena för de mer avlägsna rubrikerna överlappa de tidigare. Därför bör proxyservrar inte ändra ordningen på rubriker i ett meddelande. I det här fallet spelar ordningen på elementen i listan vanligtvis ingen roll.

Ett exempel med flerradsvärden och identiska rubriknamn (notera skiftläge och mellanslag):

innehållstyp: text/html; charset=windows-1251 Tillåt: GET, HEAD Innehållslängd: 356 TILLÅT: FÅ, ALTERNATIV Innehållslängd: 1984

Den korrekta kompakta versionen av transformationen och tolkningen är:

Content-Type: text/html;charset=windows-1251 Tillåt: GET,HEAD,ALTERNATIV Innehållslängd: 1984

I det här fallet är det olagligt att acceptera ett Content-Length-värde på 356. När du kombinerade Tillåt-värdena, för att inte förlora den semantiska betydelsen, lades ett kommatecken till i slutet av det första fältet och det meningslöst duplicerade "GET"-elementet togs bort.

Strukturer som används i rubriker

Datum och tid

Endast datumet anges i rubrikerna Date, Expires, Last-Modified, If-Modified-Since, If-Unmodified-Since. Datumet kan visas i rubriker If-Rangeoch Warning.

HTTP använder tre format:

RFC 7231 instruerar mottagare av data att vara beredda att behandla datum- och tidsstämplar i alla tre format, och att generera datum- och tidsstämplar endast i deras föredragna format.

Tiden anges alltid för GMT- tidszonen ( UTC+0 ). Årtalet är skrivet med fyra siffror. Dagen, timmen, minuten och sekunden är nollutfyllda till två tecken. Standardförkortningar med tre bokstäver på engelska används för namnen på månaden och veckodagen.

Veckodagar från och med måndag: Mon, Tue, Wed, Thu, Fri, Sat, Sun.

Månader från januari till december: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec.

PHP använder funktionen gmdate() för att konvertera lokal tid till GMT. Exempel på genereringsdatum för HTTP-rubriker:

// Aktuellt dokumentgenereringsdatum: header ( "Datum: " . gmdate ( DateTime :: RFC850 )); // Ändringsdatum för den angivna filen: $fp = 'data/my-foo.txt' ; // sökväg till rubrikfil ( "Senast ändrad: " . gmdate ( "D, d MYH:i:s" , filemtime ( $fp )) . " GMT" ); // Dokumentet är tänkt att ändras om en timme: header ( "Upphör: " . gmdate ( "D, d MYH:i:s" , tid () + 3600 ) . " GMT" ); // 3600 - antalet sekunder i förhållande till det aktuella ögonblicket.

Byteintervall

När man arbetar med innehållsfragment används byteintervall i speciella rubriker .  Du kan ange antingen ett fragment eller flera fragment i dem, separera dem med kommatecken " ". Områden gäller i rubriker och . Rubriken listar endast måttenheterna. ,RangeContent-RangeAccept-Ranges

I byteintervall måste namnet på måttenheterna anges i början, följt av symbolen " =". För tillfället, förutom enheter, används bytesinga andra. Bakom symbolen " " =finns själva intervallen. Var och en av dem är ett bindestreck-separerat -par naturliga tal, eller noll och ett naturligt tal. Det första elementet anger startbyten och det andra anger slutbyten. Numrering i intervall börjar från noll.

Start- eller slutbyten kanske inte anges. I avsaknad av den sista byten anses det att vi talar om ett fragment från startbyten till slutet av innehållet. Om det inte finns någon start tas slutbytenumret som antalet byte som begärts från slutet av innehållet.

Om den första byten är större än den sista, anses intervallet syntaktiskt ogiltigt .  Rubrikfält som innehåller intervall med syntaktiskt ogiltiga värden ignoreras. Om den första byten ligger utanför räckvidden för resursen ignoreras intervallet. Om den sista byten är utanför gränserna, trunkeras intervallet till slutet.

Ett block med byteintervall anses körbart om det innehåller minst ett tillgängligt intervall. Om alla intervall är felaktiga eller utanför räckvidden för resursen, bör servern returnera ett meddelande med statusen 416(Begärt intervall är inte tillfredsställande).

Exempel (hela resursen är 5000 byte):

  • bytes=0-255 — fragment från 0 till 255 byte inklusive.
  • bytes=42-42 - en begäran om en 42:a byte.
  • bytes=4000-7499,1000-2999 - två fragment. Eftersom den första är utanför gränserna tolkas den som " 4000-4999".
  • bytes=3000-,6000-8055 - den första tolkas som " 3000-4999", och den andra ignoreras.
  • bytes=-400,-9000 - de sista 400 byten (från 4600 till 4999), och den andra justeras till innehållsramen (från 0 till 4999) som betecknar hela volymen som ett fragment.
  • bytes=500-799,600-1023,800-849 - vid korsningar kan intervallen kombineras till ett (från 500 till 1023).

Rubriker

Rubriker i HTML

HTML -markeringsspråket låter dig ställa in de nödvändiga HTTP-rubrikvärdena internt <HEAD>med hjälp av taggen <META>. I det här fallet anges rubriknamnet i attributet http-equivoch värdet -in content. Rubrikvärdet ställs nästan alltid in Content-Typemed den kodning som anges för att undvika problem med visningen av text i webbläsaren. Det är inte heller överflödigt att ange rubrikvärdet Content-Language:

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

Se även