【发布时间】:2016-09-18 23:45:30
【问题描述】:
在分块下载中,每个块都有扩展,可以在访问浏览器时加以利用。最后一个块还可以包含定义内容长度等内容的可选标头,如果我们通过流式传输一个大文件,我们可以在最后以 http 标头的形式提供该信息。
这在 http/2 中是如何工作的?最后一段中是否有扩展名或标题。我看到有数据有效负载,但没有扩展或可选标头 AFAICT。我只看到填充。
也许一个更好的问题是浏览器甚至
- 利用最后一个块中的可选标头?
- 在每个块中利用扩展?
也许程序可能会关心,但如果它是一个程序,我相信 http/2,服务器可能只是更好地定义了 api,并在发送响应+数据后使用推送机制?
如果我是为客户端定义 api 的服务器,如何在这个新的 http/2 世界中发送可选标头?
我试图使用wireshark 来捕获下载跟踪,但chrome 似乎使用QUICK,当我使用firefox 和drive.google.com 下载文件时,我似乎无法使用wireshark 解密SSL (它在同一个跟踪中保持加密,我实际上在 TLS 中看到了一些 http2 流量,而其他一些服务工作得很好)。使用“(Pre)-Master-Secret 日志文件名”似乎只工作了一半,我不太清楚为什么。我最终不得不重新启动一切并重新运行我的案例。
另外,在 Server hello 中,h2 是选择的协议,但是当我过滤到 ip.addr=(server hello google ip) 和 tcp.port=443 时没有出现 http2 数据包
谢谢, 院长
【问题讨论】:
-
注:
Chunked transfer encoding is not supported in HTTP/2, which provides its own mechanisms for data streaming.[2]来源:维基百科 -
不阅读问题的方式@JanacMeena 第一个发布的答案是正确的。 IE。我问的是分块扩展而不是分块传输编码。