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

        簡單對比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號
        主站蜘蛛池模板: 6080亚洲精品午夜福利| 亚洲国产精品毛片av不卡在线| 国产精品成人久久久久三级午夜电影| 自拍中文精品无码| 国产综合免费精品久久久| 极品精品国产超清自在线观看| 亚洲精品国产精品国自产观看 | 麻豆国产在线精品国偷产拍| 91精品在线国产| 99久久精品毛片免费播放| 久久国产免费观看精品3| 亚洲AV成人精品一区二区三区| 精品国产呦系列在线观看免费| 亚洲欧美日韩精品永久在线| 国产99re在线观看只有精品| 国产欧美亚洲精品A| 久久久久久亚洲精品成人 | 55夜色66夜色国产精品视频| 亚洲AV永久纯肉无码精品动漫| 亚洲精品国产精品国自产观看| 欧美精品国产一区二区三区| 国产高清在线精品一本大道国产| 精品国产亚洲一区二区三区| 国产成人精品视频播放| 国产精品186在线观看在线播放| 日韩精品少妇无码受不了| 亚洲高清专区日韩精品| 亚洲精品久久久www| 四虎国产精品永久在线看| 久久久久人妻一区精品| 久久精品无码一区二区三区免费| 国产精品一区二区久久精品无码| 国产内地精品毛片视频| 国产精品自在线拍国产电影 | 国产成人精品午夜福麻豆| 99久久精品国产毛片| 亚洲天堂久久精品| 99热日韩这里只有精品| 国产成人精品福利网站在线观看 | 国产香蕉精品视频在| 国产亚洲精品a在线观看app|