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

        簡單對比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號
        主站蜘蛛池模板: 精品无码一区二区三区爱欲| 欧美精品在线一区二区三区| 国产精品白丝AV网站| 狼色精品人妻在线视频| 久久777国产线看观看精品| 亚洲精品美女久久久久99| 国产天天综合永久精品日| 91视频国产精品| 无码人妻精品一区二区三区东京热| 国内精品欧美久久精品| 最新亚洲精品国自产在线观看| 99国产欧美精品久久久蜜芽| 久久国产精品成人片免费| 亚洲精品岛国片在线观看| 精品久久人人爽天天玩人人妻| 日韩一级精品视频在线观看| 国产精品无码一区二区三级 | 亚洲av无码成人精品区| 精品国内自产拍在线观看| 午夜精品美女写真福利| 国产精品久久久久久| 97精品一区二区视频在线观看 | 一本久久a久久精品vr综合| 欧美亚洲日本久久精品| 精品久久国产一区二区三区香蕉 | 九九99精品久久久久久| 2022精品天堂在线视频| 国产精品偷伦视频观看免费 | 国产精品成人观看视频| 亚洲精品国产成人专区| 亚洲无删减国产精品一区| 久久精品国产免费一区| 欧洲精品视频在线观看| 日韩精品久久久久久| 亚洲国产精品lv| 国产精品久久久久久久久久免费| 粉嫩精品美女国产在线观看| 国产精品美女免费视频观看| 国产亚洲精品免费视频播放| 欧美精品一区二区久久| 亚洲午夜精品一级在线播放放 |