• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 简单对比Node中的setHeader和writeHead,聊聊差异

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了Node.js,setHeader和writeHead差异等相关知识,希望对您有所帮助

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


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


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

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/html1reponse.setHeader('Content-Type', 'text/html')reponse.setHeader('Content-Type', 'text/html1')

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

writeHead

参数

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

statusCode http状态码

statusMessage 状态信息(可选)

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

返回 http.ServerResponse 返回响应对象


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


作用

和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/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');});

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

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

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

总结

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

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

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

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


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • node.js 基于 STMP 协议和 EWS 协议发送邮件
  • Node.js中async的用法是什么
  • Node.js怎么读写json文件?方法介绍
  • Node.js设置NODE_ENV时发生错误怎么解决?
  • 一招教你使用Node.js中iis部署运行node(附代码)
  • 深入了解Node.js 中的多线程和多进程
  • 聊聊Node.js中的事件驱动程序和EventEmitter类
  • 浅析node Express框架中的 res.send() 和 res.end()
  • 什么是事件循环?详解Node.js中的事件循环
  • Node.js深入学习之浅析require函数中怎么添加钩子

相关文章

  • 2022-04-29解决LNMP环境无法彻底删除原网站目录文件夹的方法
  • 2022-04-29解决ThinkPHP5.1版本引入composer vendor扩展包的问题
  • 2022-04-29JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
  • 2022-04-29PHP怎么设置上传图片大小
  • 2022-04-29帝国CMS结合JS自定义手机端内容分页样式
  • 2022-04-29微博运营商对伦敦奥运的精彩赛事的直播是广告
  • 2022-04-29Flex中对表格中某列的值进行数字格式化保留两位小数
  • 2022-04-29浅析什么是装饰器?Vue中怎么使用装饰器?
  • 2022-04-29解析TP框架下mongo的基础操作及其注意点
  • 2022-04-29Photoshop制作逼真的镶嵌钻石艺术字

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 浅谈小程序如何授权登录,获取信息和手机号
    • Photoshop制作可口的饼干艺术字教程
    • Thinkphp5整合结巴分词实现网站模糊搜索
    • PhotoShop简单制作蓝色洁净星星文字效果教程
    • 如何解决SSH连接Linux超时问题
    • curl获取结果乱码的解决方法
    • PHP怎么实现正则去掉空格
    • 解决phpMyadmin给MySQL数据表创建触发器遇到的问题
    • 在Javascript中如何利用filter()对数据进行筛选
    • 搜索引擎优化的文章营销策略

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有