gpt4 book ai didi

http-headers - 是否有浏览器支持以分块编码响应发送的预告片?

转载 作者:行者123 更新时间:2023-12-03 09:12:16 25 4
gpt4 key购买 nike

HTTP/1.1指定以Transfer-Encoding: chunked发送的响应可以包含可选的预告片(即通常作为 header 发送的内容,但由于某种原因无法在内容之前进行计算,因此可以将其附加到末尾),例如:

请求:

GET /trailers.html HTTP/1.1
TE: chunked, trailers

响应:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Trailer: My-Test-Trailer
D\r\n
All your base\r\n
B\r\n;
are belong\r\n
6\r\n
to us\r\n
0\r\n
My-Test-Trailer: something\r\n
\r\n

该请求在 TE header 中指定期望 chunked响应,并且将在最后一块之后寻找 trailers

响应在 Trailer header 中指定它将发送的预告片列表(在这种情况下,仅一个: My-Test-Trailer)

每个块的发送方式为:
  • 块的大小(以十六进制表示)(D = 13),后跟一个CRLF
  • 块数据(All your base),后跟一个CRLF

  • 零大小的块( 0\r\n)指示正文的结尾。

    然后指定预告片( My-Test-Trailer: something\r\n),然后指定最终的 CRLF

    现在,从到目前为止的所有内容来看,预告片很少(如果有的话)被使用。 here和其他有关拖车的大多数讨论通常都始于“但是为什么仍然要使用拖车?”。

    抛开一个问题,出于好奇,我一直试图模拟一个使用预告片的HTTP请求/响应交换;为什么?但是到目前为止,我还无法使它正常工作,而且我不确定所生成的响应是否有问题,或者是否(确实有人建议)是否没有客户端在寻找尾部 header 。

    我尝试过的客户端包括:curl,wfetch,Chrome + jQuery。

    在所有情况下,客户端都会接收并正确重建分块的响应( All your base are belong to us);我在响应头中看到 Trailer: My-Test-Trailer正在发送;但我没有在响应头或任何地方看到 My-Test-Trailier: something返回。
    尚不清楚在接收到整个响应并关闭连接后,这样的尾部 header 是否应作为正常响应头出现在客户端中?

    有趣的是, curl change logs似乎表明curl确实支持可选的预告片,并且curl将处理它找到 into the normal header stream的所有预告片。

    所以有人知道吗:

    我可以ping的有效URL的
  • ,它将在分块响应中发送预告片? (以便我可以确认是否只是我的测试响应不起作用);和
  • 已知哪些客户端支持(和访问/显示)服务器发送的预告片?
  • 最佳答案

    没有通用的浏览器支持HTTP / 1.1预告片。在browserscope的“网络”选项卡中,查看“预告片中的标题”列。

  • Chrome:否,无法修复(bug)。支持H / 2预告片(bug)。
  • Firefox:不,我没有在bugzilla中看到票证。似乎支持H / 2。
  • IE:否
  • Edge:无
  • Safari:无
  • Opera:仅旧版本(v10-12,在14中删除)

  • 如您所见,许多非浏览器客户端都支持它。

    关于http-headers - 是否有浏览器支持以分块编码响应发送的预告片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371367/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com