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

0 投票
2 回答
145 浏览

spray - 如何将较大的块分成较小的块以适应最大块?

我的服务器正在向我发送分块编码数据,我能够在我的客户端中获得分块响应。我面临的问题是有些块太大了,大约 10 MB。由于我已将最大块大小设置为 2M,因此出现异常。

有没有办法把这个大块分成小块?

0 投票
1 回答
3337 浏览

c# - 设置分块 http 响应的最大块大小

我创建了一个网站(Azure 上的 c#),它提供对微控制器的响应(使用德州仪器 CC3100 wifi 芯片)。

微控制器的内存有限,我想将其缓冲区大小限制在 1000 字节以下。我可以使用传输编码块(并且它有效),但我正在努力解决如何设置最大块大小,因为它似乎设置为“在 TCP/IP 引擎盖下”。

我目前的缩写代码如下: -

据我所知,没有服务器或标头设置会限制块大小。是否有某种方法可以强制使用小块大小(可能是某种写入,然后是刷新?)。

非常感谢任何帮助。

0 投票
1 回答
436 浏览

amazon-s3 - http 1.1 GET 命令问题

我可以使用下面的 get 命令下载一个 test.pdf 文件,其中包含我在 C 中用于微控制器与服务器通信的代码:

GET /TestFolder/test.pdf HTTP/1.1\r\n 主机:www.xyz.com\r\n\r\n 文件:test.pdf 位于文件夹:TestFolder 在主机:xyz.com

我想在 Amazon S3 上测试该程序;所以我创建了一个帐户并上传了数据并将文件和文件夹公开,将策略添加到 S3 存储桶以便可以访问对象。当我将上面的 GET 命令发送到 S3 主机时:s3-us-west-2.amazonaws.com 在连接套接字并获得服务器的 IP 后出现错误,来自 S3 的错误消息显示:

响应错误:HTTP/1.1 400 错误请求
传输编码:分块
日期:星期一,.. 2015 04:15:02 GMT
连接:关闭
服务器:AmazonS3

我想从 get 命令中删除额外的 \r\n,并将此命令发送到 s3 GET /TestFolder/test.pdf HTTP/1.1\r\n 主机:s3-us-west-2.amazonaws.com\r\ n

这一次,请求挂起而没有响应。我没有收到任何错误消息,套接字像往常一样连接,我看到了服务器的 IP。

我将不胜感激任何可能出现问题的建议或意见。显然,当文件在其他站点公开时,GET 命令适用于文件下载,有没有人遇到过这种 http/1.1 GET 命令的问题?我可以通过在浏览器中键入链​​接从 AWS S3 访问该文件。

0 投票
1 回答
744 浏览

html - Is it a good idea to use Transfer-Encoding: chunked on static files?

I've got your usual static site, where the server grabs .html files and sends them.

I understand the importance of Transfer-Encoding: chunked for dynamic server pages, since that's what it was designed for. The speedup can be pretty incredible. But is it the same speed increase for static files? Do browsers already progressively render & fetch with requests that use Content-Length, as the file arrives over the wire?

I've got some seriously enormous HTML (documents in the hundred-page range), so progressive HTML processing would be crucial. (Kind of like how the WHATWG delivers the monolithic single-page HTML5 spec.)

0 投票
1 回答
1750 浏览

node.js - [http]未指定内容长度时如何识别流结束?

首先让我展示我的代码。

我创建了图片 1.jpg 的 readStream,然后发送数据流。在“结束”事件被触发后,我发送了一个字符串“这个字符串似乎没有被发送”。我没有在标题中指定内容长度。

在客户端,我实际上得到了正确的 1.jpg。但我没有收到字符串。我想一定有什么东西标志着流的结束。如果有,标志是​​什么?这个怎么运作?

我知道使用“分块”分配传输编码是一种发送长度不确定的数据的方法,但我的 safari 显示响应标头是:

连接保持活动
传输编码标识

0 投票
1 回答
782 浏览

ios - NSURLConnection 响应的预期内容长度 -1

*

注意:关于这个主题有几个链接,但它对我不起作用,所以我必须在这里发布新的链接。

*

基本上,我试图显示 UIProgressView 以显示从 Web 服务获取的数据。现在的问题是,我从我的应用程序调用的几乎所有服务都获得了 expectedContentLength ,并且响应标头包含Content-Length。但是对于 Web 服务的响应之一,它不会返回预期的内容长度,而是始终返回 -1。

以下是我为两个不同的 Web 服务响应获得的响应标头:

- 我获得内容长度的响应标头。(来自服务的数据并不大)

- 我没有得到内容长度的响应头。(响应包含大量数据,没有要下载的文件只是JSON数据)

以上服务响应包含大量数据。当在Advanced rest client chrome 的扩展上测试响应时,它给出了以下响应标头,并带有“Transfer-Encoding”= chunked;。

我使用了以下链接,但没有一个对我有帮助: Link1Link2Link3

请帮我。谢谢!

更新代码: 在服务器端设置 Content-Lenth 标头后,我在Advanced rest client chrome's extension上获得了 Content-Length 标头的有效响应。

但是在客户端(即在 iOS 应用程序中),我仍然没有得到 Content-Lenth 标头,因此我可以获得预期的ContentLength 值。我仍然得到“传输编码”=身份;在我这边的响应头中。我还在请求中设置了 Accept-Encoding 标头,如下所示:

[req setValue:@"identity;q=0" forHTTPHeaderField:@"Accept-Encoding"];

在任何一方(服务器/客户端)上是否还有更多工作要做。

0 投票
0 回答
541 浏览

php - Header Content-Length 没有使用 php 进入 rest web 服务

我已经使用 rest 为 ios 应用程序创建了 Web 服务。我想要 Content-Length 标头字段。当我在“Advanced Rest Client”chrome 的扩展上进行测试时,它工作正常,但 ios 应用程序没有获得 Content-Length。而不是 Content-Length 获得 Transfer-Encoding - “身份”

检查来自 Advanced Rest Client 扩展的以下响应

来自客户端 ios 应用程序的响应

0 投票
0 回答
183 浏览

php - apache中的传输编码

我有几个关于传输编码的问题。

-> 我们的后端脚本目前需要大约 500 毫秒,HTML 是在各个部分/部分中生成的。所以现在如果通过块发送数据,我的页面应该更具响应性,这种推理是否正确?

-> 现在来自PHP 中的“Transfer-Encoding: chunked”标头。我发现在每个部分之后我可以添加一个flush()来以块的形式发送数据,在apache中使用这种技术我可以看到headed transfer-encoding: chunked added,有没有办法让我通过网络做到这一点-服务器,即如果内容长度超过一定大小,则将其添加到 apache 中,以 1 个块的形式发送该数据,依此类推。

提前致谢, Nitesh

0 投票
2 回答
5793 浏览

javascript - 使用带有分块传输编码的 XHR 的 HTTP POST

我有一个通过 HTTP Post 接受音频文件的 REST API。该 API 支持 Transfer-Encoding: 分块请求标头,以便文件可以在从客户端上运行的记录器创建时分段上传。这样,服务器可以在文件到达时开始处理文件以提高性能。例如:

HTTP 1.1 POST .../v1/processAudio

传输编码:分块

[Chunk 1 256 Bytes](服务器到达时开始处理)

[块 2 256 字节]

[块 3 256 字节]

...

音频文件通常很短,大小约为 10K 到 100K。我有 C# 和 Java 代码可以工作,所以我知道 API 可以工作。但是,我似乎无法使用 javascript 在浏览器中进行录制和上传。

这是我的测试代码,它使用传输编码对本地主机进行 POST:

问题是我在 Chrome 中收到以下错误

拒绝设置不安全的标头“Transfer-Encoding”

streamUpload@uploadTest.html:14 onclick@uploadTest.html:24

在查看 XHR 文档后,我仍然感到困惑,因为它没有谈论不安全的请求标头。我想知道 XHR 是否可能不允许或实现传输编码:为 HTTP POST 分块?

我已经查看了使用多个 XHR.send() 请求和 WebSockets 的变通方案,但两者都是不可取的,因为它需要对已经到位、简单、稳定和工作的服务器 API 进行重大更改。唯一的问题是我们似乎无法通过 Transfer-Encoding: 分块请求标头从具有伪流的浏览器进行 POST。

任何想法或建议都会非常有帮助。

0 投票
1 回答
3057 浏览

http - 为什么为某些客户端发送 Transfer-Encoding:Chunked 而不是 Content-Encoding:gzip?

我很困惑。我有两台笔记本电脑通过同一个调制解调器设备连接到互联网。gzip例如,对于在其中启用的 Web 服务器,microsoft.com我的系统之一(64 位)使用Transfer-Encoding:chunked. 另一个以正确的形式获取响应标头Content-Encoding:gzip。为什么?两个系统都有 Windows 7 SP1(其中一个是 32 位,另一个是 64 位)。我在两个系统上使用相同版本的 Chrome 进行了测试。我还用 FireFox 和 IE 进行了测试。