如何快速入門VUE3.0:進入學習
今天在學習Node
的時候發現Node/http
中的setHeader和writeHead很相似,都可以設定回應頭部,我們來詳細的說說吧!
參數
response.setHeader(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')
參數
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和已經傳輸的正文長度是否一致
// 回傳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不能設置,只能設定標頭