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

        簡單對比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號
        主站蜘蛛池模板: 中文精品99久久国产 | 一本色道久久综合亚洲精品| 国产精品视频一区二区三区经| 亚洲A∨精品一区二区三区| 亚洲国产精品久久| 国产伦精品一区二区三区| 亚洲精品视频免费观看| 黑人无码精品又粗又大又长| 柠檬福利精品视频导航| 8AV国产精品爽爽ⅴa在线观看| 欧美精品v欧洲精品| 欲帝精品福利视频导航| 亚洲精品乱码久久久久久不卡| 免费精品国自产拍在线播放| 国内精品久久久久久久久| 国产激情精品一区二区三区| 国产精品亚洲欧美一区麻豆 | 国产精品岛国久久久久| 无码国内精品人妻少妇| 亚洲精品国精品久久99热| 久久精品国产色蜜蜜麻豆 | 精品成人免费自拍视频| 国产AV国片精品| 国产麻豆一精品一AV一免费| 亚洲精品蜜桃久久久久久| 午夜精品久久久久9999高清| 青青久久精品国产免费看| 久久亚洲AV永久无码精品| 久久精品国产福利国产琪琪| 国产亚洲精品成人a v小说| 国产精品一区二区av不卡| 99久久国产主播综合精品| 亚洲精品高清久久| 97精品国产自在现线免费观看| 在线电影国产精品| 国产A∨免费精品视频| 国产精品日韩欧美在线第3页 | 狠狠精品久久久无码中文字幕 | 黑人精品videos亚洲人| 九九热这里只有在线精品视| 欧美日韩精品乱国产538|