问题标签 [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 回答
291 浏览

svg - 如果 gzip 压缩和块传输,SVG 可以部分渲染吗?

我有一些大型的、动态生成的 SVG,它们通过相对较慢的互联网连接提供服务。我正在尝试优化它们以尽可能快地查看它们。如果我将服务器设置为 Content-Encoding: gzip 和 Transfer-Encoding: chunked,任何 SVG 查看器会利用它并在传输时部分呈现它吗?如果没有,还有其他方法可以让它呈现为流吗?我可以把它分成几个 SVG 部分,但这将是很多工作,我希望服务器设置......

最常见的用户使用带有 Adob​​e SVG Viewer 插件的 IE7。

我怀疑这很重要,但我使用 C#/ASP.NET 和 IIS6 服务。

0 投票
5 回答
1913 浏览

c# - 在 HTML 中安全地插入换行符

我有一个应用程序允许用户将粘贴 html 复制到表单中。此 html 作为电子邮件发送,电子邮件服务器每行不允许超过 1000 个字符。所以,我想在用户点击提交后在 html 中插入换行符(\r\n)。如何在不更改内容的情况下做到这一点?

我的想法是这样的:

但这保证不会改变结果吗?属性中不允许使用“<”吗?

编辑:我实际上认为这不起作用,因为 html 可能有一个脚本块,如 if(x < 3)。我想我需要的是一个 html 漂亮的打印机,可以在 js 或 C# 中工作。

0 投票
0 回答
651 浏览

axis2 - 尽管在axis2.xml中注释了传输编码,但响应的内容长度标头不存在

我有一个在 TOMCAT 6.0.18 上运行的axis2 服务,带有axis2 1.3 版本。

我通过注释 transfer-encoding 元素禁用了分块,并将 HTTP 更改为 1.0,如下所示:

我还在服务实现类中实现了 LifeCycle 接口。

下面是init()方法代码:

尽管进行了这些更改,但当我调用该服务时,我仍然看不到 HTTP 响应标头中的内容长度。有任何想法吗?

0 投票
1 回答
1665 浏览

java - 如何启用传输编码:AppEngine 上的 Java 分块

我已经对这个主题进行了多次谷歌搜索,但没有找到任何东西(除了确认 AppEngine 忽略对'resp.setHeader(“transfer-encoding”,xxxx)'的调用。

我的问题是我有一个服务器进程需要一点时间才能完成(平均约 3 秒),但它会产生连续流的结果(即第一个数据对象在 10 毫秒后准备就绪)。

目前,服务器缓冲响应,然后将整个响应吐给客户端进行显示。虽然这可行,但它并不是一个出色的用户体验,因为用户必须等待整个过程完成才能看到第一个结果......

我相信使用分块传输可以解决这个问题,因为我可以立即向客户端发送第一个响应(并在它可用时立即流式传输后续数据),从而更好地了解进度等。

我的问题是我无法弄清楚如何启用分块传输。

谷歌搜索分块传输和应用程序引擎通常会找到想要从 blobstore禁用分块传输的人的帖子,或者说默认启用分块传输的帖子。然而,我迄今为止的测试表明,至少对于我的应用程序来说,这不是真的。

同样,非应用程序引擎引用谈论设置“传输编码”内容标头-但这在 AppEngine 上被明确忽略(至少,根据 python 文档-在 Java 端没有找到任何东西,说明它明确的,但是当我测试它时它也不起作用)。

最后,我已经尝试过刷新 respose 对象,获取响应写入器和刷新,获取响应输出流和刷新等,没有任何区别。

所以 - 我的问题是: 如何启用分块传输?

0 投票
1 回答
551 浏览

image - 多部分帖子上传图片 - 设置传输编码,为每个部分设置标题

使用java,我需要向Constant Contacts api发出多部分表单请求以上传图像。我需要根据他们的规范创建一个带有 XML 的部分来描述文件,第二部分需要是文件本身。不是问题。问题是正确构建httppost。以下是相关代码的摘录:

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, null); entity.addPart("Body", new StringBody(content,"application/atom+xml",Charset.forName( "UTF-8" ))); entity.addPart("File", new FileBody (new File("C:\temp\removeRed.gif"), "image/gif"));
httppost.setEntity(entity); HttpResponse response = httpclient.execute(httppost); return response;

我总是收到 404 响应。我知道我有一个有效的经过身份验证的连接,并且我发布到的链接是正确的。他们的规范说第一部分内容类型标头必须设置为 application/atom+xml。他们给出的另一个规范是第二部分,文件,传输编码必须设置为二进制。有人可以说明如何为每个“部分”正确设置标题、传输编码等任何帮助将不胜感激。

0 投票
1 回答
1871 浏览

http - Apache Abdera 的分块传输编码问题

我正在使用 Apache Abdera 将 atom 多部分数据发布到我的服务器,并且遇到了一些我无法确定的奇怪问题。

这看起来像是分块传输编码的问题,但我没有足够的经验来确定。问题表现为服务器抛出错误,表明我发送的请求仅包含一个 mime 部分,而不是所需的两个部分。我将 Wireshark 附加到界面并捕获了对话,它是这样的:

服务器的响应:

我的客户继续说:

此时服务器响应:

指示错误(这很好理解)。我的服务器继续将一堆 base64 编码位流式传输到输出流中,但与此同时,服务器没有在监听,它已经确定请求是错误的。

不幸的是,我不负责 HTTP 层——这一切都由 Abdera 使用 Apache httpclient 处理。我的代码如下所示:

在这里,SWORDMultipartRequestEntity 是标准 Abdera MultipartRequestEntity 类的副本,其中包含一些额外的标头(例如,请参见上面代码段中的 Packaging);“存款”参数只是一个包含原子部分和输入流的对象。

附加调试器时,我可以很好地执行这行代码,然后它消失在老鼠洞中,然后我又得到了这个错误。

任何提示或提示?我几乎用尽了我的攻击角度!

对我来说唯一突出的是,在 atom:entry 文档之后,只有一个带有“0”的换行符,这似乎是分块传输编码,代表“我完成了”。不知道它是如何到达那里的,或者它是否真的有任何影响。非常感谢帮助。

干杯,

理查德

0 投票
1 回答
418 浏览

php - 可以使用传输编码从 PHP 发送 HTTP 1.1 页脚:分块?

在尝试并未能在 PHP 中使用 gzipped Content-Encoding 手动实现分块传输编码后,我现在又回到了在 Apache 中使用 mod_deflate,它做得很好。

唯一的问题是,我想连同回复一起发送一些页脚(比如 Last-Modified 或 ETag,所以我可以 304 请求相同的内容)。HTTP 1.1 规范在分块响应中提供了页脚(就像标题一样,只是它们排在最后)——但 PHP 似乎没有提供该功能。

可能的?

(手动实现很棒——除了我不是 gzip 大师,而且 PHP 提供的各种 zlib 函数不包括创建有效 gzip 块的函数。我设法让它在大约 50% 的时间内工作 - 但其他 50%会坏的。Doh!)

0 投票
1 回答
14059 浏览

spring - 为什么 Firefox 不遵守分块传输编码?

我正在通过在 Apache Tomcat/6.0.18 上运行的 Spring MVC 控制器流式传输大型文档

因为它很大,并且(最终)会动态生成,所以我决定使用分块传输编码。

但是,当我在 Firefox 中打开它时,我得到了这个:

与其将块大小作为有关流的元数据来读取,不如将它们作为流的一部分来读取!

使用 Live HTTP 标头,我可以看到正在接收 Transfer-Encoding 标头:

所以我不知道为什么没有正确解释块大小。如果我使用 wget 发出请求,我还会在返回的文档中看到块大小字符,因此不知何故它们没有被正确编码。有人知道为什么吗?

用wireshark查看传输:(注意“800”在整个流中重复出现)注意0x800 = 2048,这是ChunkedOutputStream类使用的默认块大小。

如果我只是直接复制到输出流而不创建 ChunkedOutputStream,我根本看不到块大小:

那么我怎么知道这是否是分块的呢?如果是,我不会看到块大小吗?

0 投票
2 回答
17747 浏览

http - 传输编码分块的 HTTP 响应中的最大块大小是多少?

w3.org (RFC2616)似乎没有定义块的最大大小。但是没有最大块大小,就没有块扩展的空间。必须有一个最大块大小,否则我不能忽略块扩展,因为如果无法理解,我建议这样做(引用:)"MUST ignore chunk-extension extensions they do not understand"

0 投票
1 回答
3532 浏览

c# - 使用分块传输编码向客户端发送数据

我正在为家庭作业构建一个流式视频服务器,现在我想使用分块传输编码将数据发送到客户端。这是我的代码:

但是客户端没有收到真实数据。我使用 Wireshark 捕获数据包,我看到客户端收到 2 个分块编码:

我正在使用 TcpListener 来监听来自客户端的连接:

请告诉我使用分块传输编码向客户端发送数据的正确方法。我很感激。