在 node.js 中计算 Content-length 标头的正确方法是啥

Posted

技术标签:

【中文标题】在 node.js 中计算 Content-length 标头的正确方法是啥【英文标题】:What is the correct method for calculating the Content-length header in node.js在 node.js 中计算 Content-length 标头的正确方法是什么 【发布时间】:2013-07-29 04:00:23 【问题描述】:

我完全不确定我当前计算内容长度的方法是否正确。使用 string.length() 计算内容长度的含义是什么。使用 node.js 时,将字符集设置为 utf-8 是否意味着什么?

payload = JSON.stringify( payload );

response.header( 'content-type', application/json; charset=utf-8 );
response.header( 'content-length', payload.length );

response.end( payload );

【问题讨论】:

查看我的问题的答案:***.com/a/17526143/1301058 【参考方案1】:

Content-Length 标头必须是响应正文中的八位字节数。 payload.length 是指以字符为单位的字符串长度。一些 UTF-8 字符包含多个字节。更好的方法是使用来自http://nodejs.org/api/buffer.htmlBuffer.byteLength(string, [encoding])。它是一个类方法,因此您不必创建任何 Buffer 实例。

【讨论】:

这为我解决了一个问题,即通过 responseBody.length 计算的内容长度与响应中给出的内容长度标头相比相差 1。

以上是关于在 node.js 中计算 Content-length 标头的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

在Node.js中计算sha1会返回与PHP不同的结果

UDP IPv4广播地址计算(附Node.js示例代码)

UDP IPv4广播地址计算(附Node.js示例代码)

如何在 Node.js 中使用 HTTPS

使用Puppeteer将Node悬停在Node.js中的element和getComputedStyle上?

node.js学习笔记一