Chunked överföringskodning

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 16 maj 2018; kontroller kräver 7 redigeringar .

Chunked överföringskodning  är en dataöverföringsmekanism i Hypertext Transfer Protocol ( HTTP ) som gör att data på ett tillförlitligt sätt kan levereras från servern till klienten (oftast klientens webbläsare ) utan att behöva veta i förväg den exakta storleken på hela texten i HTTP-meddelandet. Detta uppnås genom att dela upp meddelandet i små bitar ( bitar ) och sedan överföra varje del med endast dess storlek (i hexadecimal ). Slutet på meddelandeöverföringen bestäms av närvaron av den sista delen med noll längd. Denna mekanism låter dig skicka dynamiskt genererade objekt för vilka du inte kan förbestämma storleken. Det har bara blivit tillgängligt sedan HTTP version 1.1 (HTTP/1.1).

Utan en chunkad överföringskodningsmekanism måste ett Content-Length- huvud anges med varje HTTP-paket så att klienten kan hitta slutet på meddelandet som överförs.

Format

CRLF-avgränsaren används för att separera blockstorleksposter (del) från deras innehåll (som en sträng: "\r\n"; som byte i HEX -format : 0x0D, 0x0A). Blocklängden är storleken på blockinnehållet, CRLF-avgränsare för blockstorleksposterna ignoreras.

Schematisk representation: <blocklängd i HEX><CRLF><blockinnehåll><CRLF>

Det sista blocket är byggt enligt samma schema, därför har det följande form på grund av bristen på innehåll: 0<CRLF><CRLF>

Exempel

Svar från servern med Transfer-Encoding: chunked. CRLFFör tydlighetens skull visas symbolerna som\r\n

HTTP/1.1 200 OK\r\n Innehållstyp: text/plain\r\n Överför-kodning: chunked\r\n Anslutning: keep-alive\r\n \r\n 9\r\n bit 1,\r\n 7\r\n bit 2\r\n 0\r\n \r\n

Innehåller en textfil:

bit 1, bit 2