How should an HTTP client properly parse *chunked* HTTP response body?

前端 未结 2 965
难免孤独
难免孤独 2021-01-01 21:26

When chunked HTTP transfer encoding is used, why does the server need to write out both the chunk size in bytes and have the subsequent chunk data end with

相关标签:
2条回答
  • 2021-01-01 21:30

    A chunked consumer does not scan the message body for a CRLF pair. It first reads the specified number of bytes, and then reads two more bytes to confirm that they are CR and LF. If they're not, the message body is ill-formed, and either the size was specified improperly or the data was otherwise corrupted.

    The trailing CRLF is a belt-and-suspenders assurance (per RFC 2616 section 3.6.1, Chunked Transfer Coding), but it also serves to maintain the consistent rule that fields start at the beginning of the line.

    0 讨论(0)
  • 2021-01-01 21:52

    The CRLF after each chunk is probably just for better readability as it’s not necessary due to the chunk size at the begin of each chunk. But the CRLF after the “chunk header” is necessary as there may be additional information after the chunk size (see Chunk Transfer Encoding):

          chunk          = chunk-size [ chunk-extension ] CRLF
                           chunk-data CRLF
    
    0 讨论(0)
提交回复
热议问题