在 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.html 的Buffer.byteLength(string, [encoding])
。它是一个类方法,因此您不必创建任何 Buffer 实例。
【讨论】:
这为我解决了一个问题,即通过 responseBody.length 计算的内容长度与响应中给出的内容长度标头相比相差 1。以上是关于在 node.js 中计算 Content-length 标头的正确方法是啥的主要内容,如果未能解决你的问题,请参考以下文章