您现在的位置是:群英 > 开发技术 > web开发
对比setHeader和writeHead存在什么差异
Admin发表于 2022-09-03 17:55:11571 次浏览
在这篇文章中我们会学习到关于“对比setHeader和writeHead存在什么差异”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。


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

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

setHeader

参数

response.setHeader(name, value)复制代码
  • name 属性
  • value 属性值
  • 返回 http.ServerResponse 返回响应对象

作用

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

注意

  • 只能一个一个设置属性
  • 重复设置一个属性会替换之前的设置
  • 设置包含无效字符的属性字段名称或值将导致抛出 TypeError

示例

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

重复设置一个属性

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

writeHead

参数

response.writeHead(statusCode, [statusMessage], [headers])
  • statusCode http状态码

  • statusMessage 状态信息(可选)

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

  • 返回 http.ServerResponse 返回响应对象

作用

setHeader作用相同

注意

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

  • 只能调用一次

  • 必须在response.end()之前调用

  • 设置包含无效字符的属性字段名称或值将导致抛出 TypeError

示例

因为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/plain
const 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');
});

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

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

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

总结

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

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

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

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



以上就是关于对比setHeader和writeHead存在什么差异的介绍,本文内容仅供参考,有需要的朋友可以借鉴了解看看,希望对大家学习或工作,想要了解更多欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2021-11-23 17:41:22 
摘要:这篇文章我们来了解python中函数的相关内容,下文什么是函数、函数定义、函数的调用都有的介绍,对新手学习python中函数有一定的帮助,有需要的朋友可以参考,那么接下来就跟随小编来一起学习一下吧!
2021-12-14 18:02:01 
摘要:这篇文章给大家分享的是python的def函数的相关应用,对大家学习python函数的内容有一定的帮助,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
2022-06-01 17:30:13 
摘要:一、什么是v-bind指令v-bind指令用于响应更新html特性,允许将一个或多个属性动态绑定到表达式。v-bind是应用在动态属性上面的。二、语法v-bind语法如下:v-bind:动态属性名称=
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部