Node.js中setHeader和writeHead有何本质区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1203个文字,预计阅读时间需要5分钟。
Node.js中setHeader和writeHead有什么区别?
下面本篇文章将为大家对比一下setHeader和writeHead,聊聊它们的区别,希望对大家有所帮助!
今天在学习Node+的时侯发现Node/http中的setHeader和writeHead,下面简单聊聊它们的区别。
setHeader方法用于设置HTTP响应头,而writeHead方法用于设置HTTP状态码和响应头。
具体区别如下:
1. 功能:
- setHeader:仅用于设置HTTP响应头,不包含状态码。- writeHead:用于设置HTTP状态码和响应头。
2. 使用方式:
- setHeader:在响应对象上调用,例如:res.setHeader('Content-Type', 'text/plain');- writeHead:在响应对象上调用,并需要传入状态码和响应头,例如:res.writeHead(200, {'Content-Type': 'text/plain'});
3. 顺序:
- setHeader:可以在调用writeHead之前或之后使用。- writeHead:必须在调用setHeader之前使用。
4. 重复性:
- setHeader:可以多次调用,每次调用都会覆盖之前的设置。- writeHead:只能调用一次,调用后不能再修改状态码和响应头。
总结:
- 如果只需要设置响应头,可以使用setHeader。- 如果需要设置状态码和响应头,应使用writeHead。
希望以上内容能帮助大家更好地理解setHeader和writeHead的区别。
Nodejs中setHeader和writeHead有什么区别?下面本篇文章给大家对比一下setHeader和writeHead,聊聊它们的区别,希望对大家有所帮助!
今天在学习Node的时候发现Node/http中的setHeader和writeHead很相似,都可以设置响应头部,我们来详细的说说吧!
参数
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不能设置,只能设置标头
更多node相关知识,请访问:nodejs 教程!
本文共计1203个文字,预计阅读时间需要5分钟。
Node.js中setHeader和writeHead有什么区别?
下面本篇文章将为大家对比一下setHeader和writeHead,聊聊它们的区别,希望对大家有所帮助!
今天在学习Node+的时侯发现Node/http中的setHeader和writeHead,下面简单聊聊它们的区别。
setHeader方法用于设置HTTP响应头,而writeHead方法用于设置HTTP状态码和响应头。
具体区别如下:
1. 功能:
- setHeader:仅用于设置HTTP响应头,不包含状态码。- writeHead:用于设置HTTP状态码和响应头。
2. 使用方式:
- setHeader:在响应对象上调用,例如:res.setHeader('Content-Type', 'text/plain');- writeHead:在响应对象上调用,并需要传入状态码和响应头,例如:res.writeHead(200, {'Content-Type': 'text/plain'});
3. 顺序:
- setHeader:可以在调用writeHead之前或之后使用。- writeHead:必须在调用setHeader之前使用。
4. 重复性:
- setHeader:可以多次调用,每次调用都会覆盖之前的设置。- writeHead:只能调用一次,调用后不能再修改状态码和响应头。
总结:
- 如果只需要设置响应头,可以使用setHeader。- 如果需要设置状态码和响应头,应使用writeHead。
希望以上内容能帮助大家更好地理解setHeader和writeHead的区别。
Nodejs中setHeader和writeHead有什么区别?下面本篇文章给大家对比一下setHeader和writeHead,聊聊它们的区别,希望对大家有所帮助!
今天在学习Node的时候发现Node/http中的setHeader和writeHead很相似,都可以设置响应头部,我们来详细的说说吧!
参数
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不能设置,只能设置标头
更多node相关知识,请访问:nodejs 教程!

