当前位置: 首页 > 面试题库 >

Node Express内容长度

微生智刚
2023-03-14
问题内容

我使用node.js并在一个小项目中表达。我将响应头设置为打击:

res.set({'Content-Type':'text/plain;charset=utf-8',    
'Content-Length': Buffer.byteLength(data, 'utf-8')});

我可以使用console.log打印数据的长度为317。

但是在浏览器的控制台上,我得到了这些:

连接:keep-alive
内容编码:gzip
内容类型:文本/纯文本; charset = utf-
8日期
:2013年6月1日星期六,08 :21:59 GMT 传输编码:块状
变化:接受编码
X-Powered-作者:快递

那么,为什么 内容长度 消失了?


问题答案:

回应有Transfer-Encoding: chunked。这Content- Length是不适用的,因为内容是在响应主体内的一个或多个部分(块)中发送的,其中的标记指示每个单独块的字节长度。http://en.wikipedia.org/wiki/Chunked_transfer_encoding

Node.js默认为Transfer-Encoding: chunked。但是,通过Content- Length在本机http响应对象上设置标头可以禁用此功能。HTTP模块的文档说:

发送“ Content-length”标头将禁用默认的分块编码。

Content- Encoding:gzip在响应中的标题旁边,您可能已启用了connect.compress中间件。所述connect.compress中间件去除Content- Length报头。

无论如何,除非您自己生成压缩的内容,否则生成的Content-Length标头肯定不适合最终(压缩)响应正文。幸运的是,连接中间件为您解决了这一问题。

使用Express或Connect时,您不应假定与res对象一起“发送”的内容实际上是通过这种方式发送给客户端的。中间有中间件。所有中间件都具有更改响应的几乎所有功能的能力,包括更改响应主体以及添加,删除和更改标头。要求也一样。



 类似资料:
  • 问题内容: 我正在尝试使用连接服务器,但是PUT方法存在问题。 我需要发送一个包含 1500个字符 (或更多)的字符串,但是在这种情况下,服务器会产生超时并返回 500个服务器内部错误 。 如果我发送的字符串少于 1400个字符 ,则没有问题,服务器返回 OK 。 我的代码如下: // ----------------------- 我尝试添加线 但是服务器的答案还是错误的。 更新: 我可以发现问

  • 我试图使用Android Apache HttpClient做一个POST,但它返回错误411内容长度必需。这是代码。 我已经尝试添加行:- 但我得到了一个“组织”。阿帕奇。http。ProtocolException:内容长度标头已出现“错误”。这必须意味着HttpClient已经在发送内容长度。不幸的是,我无法访问服务器端。知道为什么会返回这些错误吗?

  • 我的HTTP头有问题。我需要发送一个带有空正文和标题“content-length:0”的post-request。但这似乎是不可能的,因为我有一个例外: --org.apache.http.ProtocolException:内容长度头已存在-- 编辑: 用@Beno Arakelyan的答案解决了这个问题。

  • 问题内容: 当用户上传文件时,我在php的error_log中收到类似的错误 PHP警告:11933650字节的POST内容长度超出了第0行中Unknown中的8388608字节的限制 在我的php.ini(在public_html中创建自定义ini文件)中是否可以解决此问题,我必须将其设置为1GB左右多少?我将在php.ini中将其设置更改为此,它将解决问题吗? 我将“ memory_limit

  • 如何计算内容长度,例如:

  • 当我试图发布一些数据,超过php.inipost_max_size设置我得到这个错误: 警告:未知:第0行中X字节的帖子内容长度超过Y字节的限制。 我不想增加post_max_size,我只想能够关闭警告,并告诉帖子数据是否超过post_max_size。我试图用error_reporting打开警告,但是因为警告在第0行,所以没有帮助。