问题标签 [chunked-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.

0 投票
1 回答
1295 浏览

http - 为什么 Comet 需要分块编码响应?

我读了一些关于彗星技术的文章。他们都提到长寿命的 HTTP 响应应该是 Transfer-Encoding: chunked 。我想知道为什么它应该被分块编码。如果响应没有被分块编码,客户端 javascript 仍然可以读取和解析响应的文本,对吗?

彗星响应应该被分块编码有什么特殊原因吗?

0 投票
2 回答
2606 浏览

http - HTTP 块传输编码:如何发送“\r\n”?

假设我尝试通过分块编码发送的正文包括“\r\n”,我如何避免将其解释为块分隔符?

例如“你所有的基地都\r\n属于我们”

http://en.wikipedia.org/wiki/Chunked_transfer_encoding

0 投票
2 回答
7034 浏览

http - 如何禁用传输编码:chunked websphere

我们有一个使用基于 IBM JAX-RPC 的 Web 服务在 Websphere 6.1 上运行的 Web 服务。客户端发送的请求没有传输编码的 HTTP 标头:分块(它们指定内容长度)。来自 websphere 的响应始终在 HTTP 标头中包含 transfer-encoding:chunked。我认为这将导致响应以多个块发送。在服务请求者和服务提供者被许多中介(如防火墙和负载均衡器 (T1/F5))分隔的系统中,这种分块可能会导致显着延迟。

链接和此链接讨论请求分块,但未提及任何响应。

有没有办法将 websphere 配置为不在 HTTP 标头的响应中添加 transfer-encoding:chunked?

0 投票
2 回答
8472 浏览

java - 在 Java 中获取 HTTP 响应的大小

我想知道响应某个 http 请求发送了多少数据。我目前做的是这样的:

//检查内容大小的响应 int feedsize = con.getContentLength();

问题是,内容长度并不总是设置。例如,当服务器使用 transfer-encoding=chunked 我得到一个值 -1。

不需要它来显示进度信息。我只需要知道完成后发送给我的数据的大小。

背景:我需要此信息,因为我想将其与使用 gzip 编码发送的响应的大小进行比较。

0 投票
1 回答
1187 浏览

wcf - WCF Rest 客户端和传输编码分块:是否支持?

我有一个如下定义的数据合同:

服务合同是这样的:

当我对主机进行休息调用时,我得到了数据,但只填充了 Id 和 Name 属性。描述属性为空!我通过从 ClientBase 继承来创建频道。

有谁知道为什么 WCF 序列化 Id 和 Name 而不是 Description?在主机的响应中,传输编码设置为“分块”,我想知道这是否与它有关?

0 投票
2 回答
4901 浏览

asp.net-mvc - 为什么分块传输编码中的 http-response 仅适用于某些客户端

我有一个在 IIS 7 上运行的 asp.net mvc 应用程序。我遇到的问题是,根据客户端的不同,响应可能会被接收(通过提琴手看到)为“分块传输编码。我不明白为什么这只发生在我的一些客户身上(即使两台计算机在同一个网络上使用相同的浏览器(IE 8)而不是每个人,反之亦然?

谁能给我解释一下?

很抱歉这次更新较晚,但问题原来是用户如何到达服务器的结果。如果用户通过 vpn 连接连接到本地局域网,则将回避代理,否则将使用代理。这导致了两种不同的结果。

0 投票
1 回答
8215 浏览

c# - 任何人都有示例代码,用于将一个 Web 的“分块”HTTP 流式下载直接上传到单独的 Web 服务器?

背景- 我正在尝试使用 C# 中的 HttpWebRequest/HttpWebResponse 将现有网页流式传输到单独的 Web 应用程序。我要注意的一个问题是我正在尝试使用文件下载的内容长度来设置文件上传请求的内容长度,但是问题似乎是源网页位于 HttpWebResponse 没有的网络服务器上时提供内容长度。

问题:我如何更新这种方法以适应这种情况(当下载响应没有设置内容长度时)。也许会以某种方式使用 MemoryStream 吗?任何示例代码将不胜感激。 特别是有人会有一个代码示例来说明如何进行“分块”HTTP下载和上传以避免源Web服务器不提供内容长度的任何问题?

谢谢

0 投票
1 回答
434 浏览

http - HTTP 块:所有块连续且不间断地发送?

我可以确定分块的 HTTP 响应不会被其他任何东西中断发送吗?我需要区分响应(和请求),这不是读取内容长度、查看关闭连接或无主体响应代码的简单情况。

我可以读取每个块,一旦块大小为 0,我将只读取一个响应(或请求)吗?即是否有可能交错发送任何其他响应的一部分?我怀疑它连续发送且不间断的,因为在分块传输的规范中似乎没有任何类型的标识,那么如何重新组装多个呢?

最后,如果响应是分块发送的,客户端发送的内容是否超出其原始请求?我正在考虑流控制和错误检查,但这都是在较低层处理的,所以我怀疑客户端不会再发送任何东西。

谢谢!

0 投票
2 回答
2506 浏览

http - 使用分块传输编码时的 Grails 多个请求

我正在通过 Grails 下载文件,并记录该文件已被该用户下载的事实,代码如下:

而且我看到每次点击都会出现几条下载记录。我怀疑这与 Firefox 记录的几个请求和我在 Live HTTP Headers 中看到的“Transfer-Encoding: chunked”标头有关。(这种行为在 Chromium 中也很明显)

我还看到终端中记录了一个错误,这可能是相关的,可能是 Grails 中的一个错误,或者只是一个已记录并被忽略的错误,但它似乎并没有阻止文件实际下载:

理想情况下,我希望我的控制器代码只执行一次,并下载分块文件。我可以通过几个动作来做到这一点,第一个动作记录下载,然后重定向到第二个下载文件。但是设置另一个重定向并且必须使用诸如 flash 范围之类的东西来保护第二个 url,这似乎是一个糟糕的解决方案。似乎我不知道 HTTP 协议或 Grails 是如何工作的,但有一种简单的方法可以解决这个问题。

有任何想法吗 ?

0 投票
2 回答
6480 浏览

http - HTTP 客户端应该如何正确解析 *chunked* HTTP 响应正文?

当使用分块的 HTTP 传输编码时,为什么服务器需要以字节为单位写出块大小后续的块数据以 CRLF 结尾?

这不会使发送二进制数据“CRLF-unclean”并且该方法有点多余吗?

如果数据在某处有 0x0A 后跟 0x0D 怎么办(即这些实际上是数据的一部分)?那么客户端是否期望遵守在块头部明确提供的块大小,或者在它在数据中遇到的第一个 CRLF 时阻塞?

到目前为止,我对预期客户端行为的理解是简单地获取服务器提供的块大小,继续下一行,然后从以下数据(CRLF 或其中没有 CRLF)中准确读取此字节数,然后跳过 CRLF跟踪数据并重复该过程,直到不再有块。这是合规行为吗?如果是这样,那么每个数据块之后的 CRLF 有什么意义呢?可读性?

我已经对此进行了一些网络搜索,并且还阅读了一些 HTTP 1.1 规范,但我似乎无法找到明确的答案。