1

我的 ASP.NET 应用程序将 JSON 对象返回给用户,它包含二进制编码数据。因此,我决定启用 HTTP 压缩,问题从 Content-Length 开始。

如果我启用压缩,则 Content-Length 标头将被忽略,而 response 的发送和连接不会立即关闭。发送完所有数据后,连接仍保持打开状态约 15 秒。

我想启用 HTTP 压缩,但不知道如何解决 Content-Length 标头的问题。

context.Response.AddHeader("Content-Length", jsonObject.ToString().Length.ToString());
context.Response.Write(jsonObject);
context.Response.Flush();
context.Response.Close();
4

1 回答 1

2

Content-Length表示在您的情况下正在传输的数据的长度,它是压缩字节。请参阅此 SO 问题,其答案链接到相关 RFC:使用 http 压缩时的内容长度

如果 HTTP 压缩是通过 Web 服务器(而不是您的代码)发生的,那么我建议您尝试自己添加 content-length 标头。希望网络服务器能正确添加它。

这可以在http://httpd.apache.org/上使用 Chrome 进行验证,如果您查看开发人员控制台,您会发现它Content-Length比实际的未压缩页面(以字节为单位)小得多。

于 2011-10-03T10:33:28.060 回答