问题标签 [transfer-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 内容编码:gzip + 传输编码:用 gzip/zlib 分块会给出不正确的标头检查
您如何使用 gzip 编码管理分块数据?我有一个服务器,它以下列方式发送数据:
我对此有几种不同的方法,但是我在这里忘记了一些东西。
Gives(也尝试在\r\n\r\n
obv 之后仅解码数据):
zlib.error: Error -3 while decompressing data: incorrect header check
因此,我认为一旦以完整格式收到数据,就应该对数据进行解压缩..
同样的错误。data[:-7]
由于数据末尾的块ID以及其他各种组合,还尝试解压缩data[2:-7]
,但出现相同的错误。
我还gzip
通过以下方式尝试了该模块:
但这给了我“不是压缩文件”。
即使将服务器收到的数据(标头+数据)记录到文件中,然后在端口 80 上创建一个服务器套接字,将数据(再次按原样)提供给浏览器,它也能完美呈现,因此数据是完好无损的。我拿了这些数据,去掉了标题(没有别的),然后在文件上尝试了 gzip:
感谢@mark-adler,我生成了以下代码来取消分块数据:
这产生OSError: CRC check failed 0x70a18ee9 != 0x5666e236
了更近一步的结果。简而言之,我根据这四个部分剪辑数据:
<chunk length o' X bytes>
\r\n
<chunk>
\r\n
我可能到了那里,但还不够近。
脚注:是的,套接字远非最佳,但它看起来是这样的,因为我认为我没有从套接字获取所有数据,所以我实现了一个巨大的超时并尝试使用depleted
:)进行故障保护
python - 如何在 mod_wsgi 下的 werkzeug 中控制 http 分块的使用
以下环境下:Apache -> mod_wsgi -> python -> werkzeug
如何控制是否使用 http ckunking 以及块有多大?
跟进:
我担心的是这之间的区别:
和这个:
在第一种情况下,werkzeug 遍历字符串并一次发送一个字符。我不知道每个字符是否以自己的块发送,但我知道它比字符串作为一个整体发送的第二种情况要慢得多。
这两种情况之间的速度差异是由于分块吗?还是别的什么?
http - 如何在 Varnish 中禁用“传输编码:分块”编码?
使用Varnish 4,我有一组后端响应有效的Content-Length
标头而没有Transfer-Encoding
标头。
在客户端第一次点击时,Varnish 不会使用这些标头响应客户端,而是删除Content-Length
标头并添加Transfer-Encoding: chunked
到响应中。(有趣的是,有效载荷中似乎没有任何块 - 它是一个连续的有效载荷)。
这会给尝试基于标头进行分段大小、带宽等分析的 Flash 视频播放器等客户端带来严重问题Content-Length
。他们的分析失败了,他们不能做多比特率流媒体等事情。
我尝试了一些半显而易见的事情,例如:
beresp.do_stream = true
beresp.do_gzip = false
unset req.http.Accept-Encoding
示例后端响应:
样品清漆响应:
对象的后续加载确实包括Content-Length
标头,而不是第一次加载到缓存中。
VCL:https ://gist.github.com/onethumb/e64a405cc579909cace1
清漆日志输出:https ://gist.github.com/onethumb/e66a2bc4727a3a5340b6
http - 我应该在 Connection 标头中添加 HTTP“Transfer-Encoding”吗?
HTTP 协议声明了两件事:
Transfer-Encoding
是逐跳标头,必须由代理删除。- 应在 Connection 标头中添加其他逐跳标头,以告诉代理将其删除。
但是,如果每个人都知道这Transfer-Encoding
是一个在每一跳都被删除的标头,那么是否也有必要在 Connection 标头中添加它?
http - HTTP - 客户端如何知道服务器接受哪些传输编码?
我知道服务器只能使用请求的“TE”标头指定的传输编码将数据发送到客户端(或者只有在没有“TE”标头并且客户端是 HTTP/1.1 时才分块)。但是,客户端如何知道服务器接受了哪些传输编码?因为我知道传输编码可以两种方式使用。
python - 如何使用 Python 的 urllib2 下载分块数据
我正在尝试使用 Python 2 从服务器下载一个大文件:
服务器使用“Transfer-Encoding:chunked”发送数据,我只得到一些二进制数据,无法通过 gunzip 解压缩。
我是否必须遍历多个 read()s?还是多个请求?如果是这样,他们必须是什么样子?
注意:我正在尝试仅使用 Python 2 标准库来解决问题,而不使用 urllib3 或 requests 等其他库。这甚至可能吗?
asp.net-web-api - 将 XML 作为文本或流(二进制)传输
我们希望将 XML 传输到可以接受文本和二进制数据的 WEB API。就流量大小而言,传输它的最佳方式是什么?
将其传输为明文还是二进制数据流更好?
http - 如何禁用 HTTP 传输编码:在 UPNP 事件通知中分块?
我有一个 http 服务器,它监听 UPNP 事件,并且不支持 http“Transfer-Encoding: chunked”。当我订阅 UPNP 设备服务通知时,我使用 http v1.0,但我仍然收到带有 HTTP 1.1 和“Transfer-Encoding: chunked”的通知
java - 读取分块响应
我正在尝试读取 servlet 中的文件并将其作为分块消息发送(响应)到 jsp,我可以在浏览器中将其作为纯文本查看。
这是我尝试过的:
Servlet:
jsp:
我需要每 500 毫秒用新行更新页面而不刷新页面,而是在读取整个文件后一次获取整个文件。
难道我做错了什么?我错过了什么吗?
我的jsp正确吗?
我在网上尝试了很多资源,但找不到我缺少的东西。
有没有什么例子可以让我获得对分块响应读写的支持?
提前致谢。
php - HTML 页面上的 preg_replace 给出 net ::ERR_INVALID_CHUNKED_ENCODING
我有一个简单的 curl 调用,它从服务器检索 HTML 页面,然后preg_replace()
在页面中插入一些内容,然后将结果回显到浏览器。
我注意到的是,如果 curl 试图从中获取 HTML 页面的 HTTP 服务器使用 header 'Transfer-Enoding: chunked
',则 html 输出将以某种方式被编码(我注意到一些奇怪的迹象)并且preg_replace()
调用会完成这项工作,但浏览器只会获取ERR_INVALID_CHUNKED_ENCODING
并获胜'不加载页面。必须有一种方法可以替换部分页面而不会弄乱分块编码?