站長資訊網
最全最豐富的資訊網站

簡單對比Node中的setHeader和writeHead,聊聊差異

Nodejs中setHeader和writeHead有什么區別?下面本篇文章給大家對比一下setHeader和writeHead,聊聊它們的區別,希望對大家有所幫助!

簡單對比Node中的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')

簡單對比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/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不能設置,只能設置標頭

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
亚洲码国产精品高潮在线| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 国产观看精品一区二区三区| 国产成人精品午夜二三区| 亚洲国产精品网站在线播放| 久久久久久精品久久久久| 99热这里有免费国产精品| 久久亚洲精品国产精品黑人| 华人在线精品免费观看| 中文精品99久久国产| 精品乱子伦一区二区三区高清免费播放 | 精品无码成人网站久久久久久| 92国产精品午夜福利| 国产91久久精品一区二区| 亚洲午夜精品国产电影在线观看| 99热这里只有精品6免费| 亚洲精品在线观看视频| 久久亚洲精品无码| 久久久久久久99精品免费| 亚洲Av永久无码精品三区在线| 久久精品国产亚洲一区二区| 99精品国产综合久久久久五月天 | 亚洲精品中文字幕无乱码| 久久精品毛片免费观看| 久久久久无码精品国产不卡| 99这里只有精品| 91麻豆精品激情在线观看最新| 99爱在线精品视频网站| 中文字幕精品一区二区日本| 99re热这里只有精品| 99精品国产三级在线观看| 亚洲精品在线视频观看| fulidown国产精品合集| 2020久久精品国产免费| 国产99久久久国产精品小说| 99热在线日韩精品免费| 亚洲精品456在线播放| 精品国产一区二区三区久久久狼 | 亚洲av午夜精品无码专区| 精品国产一区二区三区久久久狼| 国产精品嫩草视频永久网址|