Transfer-Encoding
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Transfer-Encoding æ 头ææäºå°ææè´è½½ä½å®å
¨ä¼ è¾ç»ç¨æ·æéç¨çç¼ç å½¢å¼ã
夿³¨ï¼HTTP/2 ç¦æ¢ä½¿ç¨é¤ HTTP/2 ç¹æç "trailers" 以å¤çææ Transfer-Encoding æ 头ãHTTP 2 æä¾äºæ¯ååä¼ è¾æ´ææçæ°æ®æµæºå¶ï¼å¹¶ç¦æ¢ä½¿ç¨è¯¥æ 头ãå¨ HTTP/2 ä¸ä½¿ç¨è¯¥æ 头å¯è½ä¼å¯¼è´ç¹å®ç protocol errorï¼å 为 HTTP/2 åè®®ç¦æ¢ä½¿ç¨è¯¥æ 头ã
Transfer-Encoding æ¯ä¸ä¸ªéè·³ä¼ è¾æ 头ï¼å³ä»
åºç¨äºä¸¤ä¸ªèç¹ä¹é´çæ¶æ¯ä¼ éï¼è䏿¯æè¯·æ±çèµæºæ¬èº«ãä¸ä¸ªå¤èç¹è¿æ¥ä¸çæ¯ä¸æ®µé½å¯ä»¥åºç¨ä¸åç Transfer-Encoding å¼ãå¦æä½ æ³è¦å°å缩åçæ°æ®åºç¨äºæ´ä¸ªè¿æ¥ï¼é£ä¹è¯·ä½¿ç¨ç«¯å°ç«¯æ 头 Content-Encodingã
å½è¿ä¸ªæ 头åºç°å¨ HEAD 请æ±çååºä¸ï¼èè¿æ ·çååºæ²¡ææ¶æ¯ä½ï¼é£ä¹å®å
¶å®æçæ¯åºç¨å¨ç¸åºç GET 请æ±çåºççå¼ã
| æ 头类å | è¯·æ±æ 头ãååºæ å¤´ãææè´è½½æ 头 |
|---|---|
| ç¦æ¢ä¿®æ¹çæ 头 | æ¯ |
è¯æ³
Transfer-Encoding: chunked
Transfer-Encoding: compress
Transfer-Encoding: deflate
Transfer-Encoding: gzip
// å¯ä»¥ååºå¤ä¸ªå¼ï¼ç¨éå·åå²
Transfer-Encoding: gzip, chunked
æä»¤
chunked-
æ°æ®ä»¥ä¸ç³»åååçå½¢å¼è¿è¡åéã
Content-Lengthæ 头å¨è¿ç§æ åµä¸ä¸è¢«åéã卿¯ä¸ä¸ªååçå¼å¤´éè¦æ·»å å½åååçé¿åº¦ï¼ä»¥åå è¿å¶çå½¢å¼è¡¨ç¤ºï¼åé¢ç´§è·çâ\r\nâï¼ä¹åæ¯ååæ¬èº«ï¼åé¢ä¹æ¯â\r\nâãç»æ¢åæ¯ä¸ä¸ªå¸¸è§çååï¼ä¸åä¹å¤å¨äºå ¶é¿åº¦ä¸º 0ãç»æ¢åå颿¯ä¸ä¸ªæè½½ï¼trailerï¼ï¼ç±ä¸ç³»åçæ å¤´ï¼å¯è½ä¸ºç©ºï¼ææã compress-
éç¨ Lempel-Ziv-Welchï¼LZWï¼åç¼©ç®æ³ãè¿ä¸ªåç§°æ¥èª UNIX ç³»ç»ç compress ç¨åºï¼è¯¥ç¨åºå®ç°äºåè¿°ç®æ³ãä¸å·²ä»å¤§å¤æ° UNIX åè¡ç䏿¶å¤±ç compress ç¨åºä¸æ ·ï¼å¦ä»å 乿²¡ææµè§å¨ä½¿ç¨è¿ç§å 容ç¼ç ï¼é¨ååå æ¯ä¸å©é®é¢ï¼2003 å¹´å°æï¼ã
deflate-
éç¨ zlib ç»æï¼äº RFC 1950 å®ä¹ï¼å deflate åç¼©ç®æ³ï¼äº RFC 1951 å®ä¹ï¼ã
gzip-
表示éç¨ Lempel-Ziv codingï¼LZ77ï¼åç¼©ç®æ³ï¼ä»¥å 32 ä½ CRC æ ¡éªçç¼ç æ¹å¼ãè¿ä¸ªç¼ç æ¹å¼æåç± UNIX å¹³å°ä¸ç gzip ç¨åºéç¨ãåºäºå ¼å®¹æ§çèèï¼HTTP/1.1 æ åæè®®æ¯æè¿ç§ç¼ç æ¹å¼çæå¡å¨åºè¯¥è¯å«ä½ä¸ºå«åç
x-gzipæä»¤ã
示ä¾
>ååç¼ç
ååç¼ç 主è¦åºç¨äºå¦ä¸åºæ¯ï¼å³è¦ä¼ è¾å¤§éçæ°æ®ï¼ä½æ¯å¨è¯·æ±å¨æ²¡æè¢«å¤çå®ä¹åååºçé¿åº¦æ¯æ æ³è·å¾çãä¾å¦ï¼å½éè¦ç¨ä»æ°æ®åºä¸æ¥è¯¢è·å¾çæ°æ®çæä¸ä¸ªå¤§ç HTML è¡¨æ ¼çæ¶åï¼æè éè¦ä¼ è¾å¤§éçå¾ççæ¶åãä¸ä¸ªååååºå½¢å¼å¦ä¸ï¼
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
7\r\n
Mozilla\r\n
11\r\n
Developer Network\r\n
0\r\n
\r\n
è§è
| è§è |
|---|
| HTTP/1.1 > # field.transfer-encoding > |
æµè§å¨å ¼å®¹æ§
åè§
Accept-EncodingContent-EncodingContent-Length- è§èæè½½ä½¿ç¨çæ 头忮µï¼
TEï¼è¯·æ±ï¼åTrailerï¼ååºï¼ã - ååä¼ è¾ç¼ç