分块编码和内容长度标头

p00*_*a00 23 encoding http chunked transfer

是否可以设置内容长度标头并使用分块传输编码?这样做是否解决了在使用chunked时不知道客户端响应长度的问题?

我正在考虑的情况是当你有一个大文件要传输时,确定它的大小没有问题,但它太大而无法完全缓冲.(如果你没有使用chunked,那么整个响应必须首先得到缓冲?对吗?)

谢谢.

Jul*_*hke 29

1)否:"消息不得包括Content-Length头字段和非身份传输编码.如果消息确实包含非身份传输编码,则必须忽略Content-Length." (RFC 2616,第4.4节)

2)不,你可以使用Content-Length和stream; 协议不会限制您的实现如何工作.


Gya*_*yan 10

好吧,你总是可以发一个标题来说明文件的大小.类似的东西response.addHeader("File-Size","size of the file");
并忽略Content-Length标头.

必须调整客户端实现以读取此值,但是,你可以实现你想要的两件事:)

  • 惯例是在任何非标准头上使用`X -`前缀.HTTP代理可能决定放弃非标准的非X标头. (5认同)
  • 截至 5 年前,非标准标头上的“X-”前缀不受欢迎、不推荐使用,并且不被视为最佳实践。继续使用`file-size`作为标题名称,就可以了。https://tools.ietf.org/html/rfc6648 (4认同)