標頭
Baseline 廣泛可用 *
注意:此功能在 Web Workers 中可用。
Headers 介面是 Fetch API 的一部分,允許你對 HTTP 請求和響應頭 執行各種操作。這些操作包括檢索、設定、新增和刪除請求頭列表中的頭。
你可以透過 Request.headers 和 Response.headers 屬性獲取 Headers 物件,並使用 Headers() 建構函式建立一個新的 Headers 物件。與使用純物件相比,使用 Headers 物件傳送請求會提供一些額外的輸入清理。例如,它會將頭名稱規範化為小寫,去除頭值前後的空格,並阻止某些頭被設定。
注意: 你可以透過閱讀我們的 HTTP Headers 參考文件來了解更多可用的頭。
描述
Headers 物件有一個關聯的頭列表,該列表最初為空,由零個或多個名稱和值對組成。你可以使用 append() 等方法向列表中新增內容(參見 示例)。在此介面的所有方法中,頭名稱匹配時將忽略大小寫,按位元組序列進行比較。
實現 Headers 的物件可以直接用在 for...of 結構中,而不是使用 entries():for (const p of myHeaders) 等同於 for (const p of myHeaders.entries())。
修改限制
某些 Headers 物件對 set()、delete() 和 append() 方法是否能修改頭有修改限制。修改限制會根據 Headers 物件的建立方式來設定。
- 對於使用
Headers()建構函式建立的頭,沒有修改限制。 - 對於
Request物件的頭- 如果請求的
mode是no-cors,你可以修改任何 CORS 安全列出的請求頭 名稱/值。 - 否則,你可以修改任何 非禁止的請求頭 名稱/值。
- 如果請求的
- 對於
Response物件的頭- 如果響應是透過
Response.error()或Response.redirect()建立的,或者來自fetch()呼叫,則該頭是不可變的,無法修改。 - 否則,如果響應是透過
Response()或Response.json()建立的,你可以修改任何 非禁止的響應頭 名稱/值。
- 如果響應是透過
如果你嘗試傳遞一個無效的 HTTP 頭名稱 的引用,所有 Headers 方法都會丟擲一個 TypeError。如果頭是不可變的,修改操作會丟擲 TypeError。在任何其他失敗情況下,它們會靜默失敗。
建構函式
Headers()-
建立一個新的
Headers物件。
例項方法
Headers.append()-
在
Headers物件中,向現有頭追加新值,或者在頭不存在時新增該頭。 Headers.delete()-
從
Headers物件中刪除一個頭。 Headers.entries()-
返回一個
iterator,允許遍歷該物件中包含的所有鍵/值對。 Headers.forEach()-
為
Headers物件中的每個鍵/值對執行一次提供的函式。 Headers.get()-
在具有給定名稱的
Headers物件中,返回一個包含該頭所有值的String序列。 -
返回一個數組,其中包含與響應關聯的所有
Set-Cookie頭的值。 Headers.has()-
返回一個布林值,指示
Headers物件是否包含某個頭。 Headers.keys()-
返回一個
iterator,允許遍歷該物件中包含的所有鍵/值對的鍵。 Headers.set()-
在
Headers物件中,為現有頭設定新值,或者在頭不存在時新增該頭。 Headers.values()-
返回一個
iterator,允許遍歷該物件中包含的所有鍵/值對的值。
注意: 需要明確的是,Headers.set() 和 Headers.append() 之間的區別是,如果指定的頭已經存在且接受多個值,Headers.set() 會用新值覆蓋現有值,而 Headers.append() 會將新值追加到現有值集合的末尾。請參閱它們各自的頁面以獲取示例程式碼。
注意: 當迭代頭的值時,它們會自動按字典順序排序,並且來自重複頭名稱的值會被合併。
示例
在下面的程式碼片段中,我們使用 Headers() 建構函式建立一個新的頭,然後使用 append() 向其新增一個新頭,最後使用 get() 返回該頭的值。
const myHeaders = new Headers();
myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // should return 'text/xml'
透過向建構函式傳遞陣列的陣列或物件字面量,也可以實現相同的功能。
let myHeaders = new Headers({
"Content-Type": "text/xml",
});
// or, using an array of arrays:
myHeaders = new Headers([["Content-Type", "text/xml"]]);
myHeaders.get("Content-Type"); // should return 'text/xml'
規範
| 規範 |
|---|
| Fetch # headers-class |
瀏覽器相容性
載入中…