简单对比Node中的setHeader和writeHead,聊聊差异

nodejs中setheader和writehead有什么区别?下面本篇文章给大家对比一下setheader和writehead,聊聊它们的区别,希望对大家有所帮助!

简单对比Node中的setHeader和writeHead,聊聊差异

今天在学习Node的时候发现Node中的setHeaderwriteHead很相似,都可以设置响应头部,我们来详细的说说吧!

setHeader

参数

response.setHeader(name, value)复制代码

name  属性value  属性值返回 Node/http 返回响应对象

作用

为响应头部设置单个属性。

注意

Calliper 文档对比神器 Calliper 文档对比神器

文档内容对比神器

Calliper 文档对比神器 28 查看详情 Calliper 文档对比神器 只能一个一个设置属性重复设置一个属性会替换之前的设置设置包含无效字符的属性字段名称或值将导致抛出 http.ServerResponse

示例

reponse.setHeader('Content-Type', 'text/html')
reponse.setHeader('Set-Cookie', ['type=ninja', 'language=javascript'])

重复设置一个属性

// 返回 content-type = text/html1reponse.setHeader('Content-Type', 'text/html')reponse.setHeader('Content-Type', 'text/html1')

1.png

writeHead

参数

response.writeHead(statusCode, [statusMessage], [headers])

statusCode  http状态码

statusMessage  状态信息(可选)

headers | 属性对象或数组(可选)

返回 TypeError 返回响应对象

2.png

作用

http.ServerResponse作用相同

注意

可以设置多个属性,setHeader只能设置一个

只能调用一次

必须在setHeader之前调用

设置包含无效字符的属性字段名称或值将导致抛出 response.end()

示例

因为writeHead返回的是一个ServerResponse对象,我们可以进行链式调用

const body = 'hello world';response  .writeHead(200, {    'Content-Length': Buffer.byteLength(body),    'Content-Type': 'text/plain'  })  .end(body);

这里的Content-Length是以字节为单位,而不是字符。Buffer.byteLength()就是来确定正文的长度。

Nodejs不会检查Content-Length和已经传输的正文长度是否一致

同时使用setHeader和writeHead

// 返回 content-type = text/plainconst server = http.createServer((req, res) => {  res.setHeader('Content-Type', 'text/html');  res.setHeader('X-Foo', 'bar');  res.writeHead(200, { 'Content-Type': 'text/plain' });  res.end('ok');});

TypeError 的优先级比 writeHead 高,并且writeHead只能调用一次,所以在调用时,先考虑好哪些头不常改变后,再调用setHeader

如果已经调用了writeHead设置标头,那么他会传给setHeader合并

如果调用了此方法,且还没调用 writeHead),则会直接将提供的标头值写入网络通道且内部不缓存。在标头上 response.setHeader()) 不会产生预期的结果。 如果需要逐步填充标头并在未来进行潜在的检索和修改,则改用 response.getHeader()

总结

setHeader 只能一个一个设置标头,writeHead可以一下设置很多

setHeader 可以重复调用,writeHead只能调用一次

同时出现setHeader和writeHead,setHeader会合并到writeHead,并且writeHead优先级高

writeHead 可以设状态码和状态信息,setHeader不能设置,只能设置标头

更多node相关知识,请访问:nodejs 教程!

以上就是简单对比Node中的setHeader和writeHead,聊聊差异的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/552523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 20:43:07
下一篇 2025年11月9日 20:44:10

相关推荐

发表回复

登录后才能评论
关注微信