Fetch API:Headers接口

2018-03-14 10:39 更新

Headers接口

Fetch API 的 Headers 接口允許對 HTTP 請求和響應頭執(zhí)行各種操作。這些操作包括檢索、設置、添加和刪除。一個 Headers 對象有一個關聯(lián)的標題列表,它最初是空的,由零個或多個名稱和值對組成。您可以使用像 append() 這樣的方法添加到此處(請參閱示例)。在此 Headers 接口的所有方法中,標頭名稱均由不區(qū)分大小寫的字節(jié)序列進行匹配。 

出于安全原因,某些標頭只能由用戶代理控制。這些標題包括禁止的標頭名稱和禁止的響應標頭名稱。

標頭對象還有一個關聯(lián)的保護,這需要 immutable,request,request-no-cors,response,或 none 的值。這會影響 set(),delete() 和 append() 方法是否會產生變異的頭。

您可以通過 Request.headers 和 Response.headers 屬性檢索 Headers 對象,并使用 Headers.Headers() 構造函數(shù)創(chuàng)建一個新 Headers 對象。

一個 Headers 對象的實現(xiàn)可以直接用在一個 for...of 結構中,而不是 entries():for (var p of myHeaders),相當于 for (var p of myHeaders.entries())。

注意:您可以通過閱讀我們的 HTTP 標頭引用找到更多關于可用標頭的信息。

Headers 接口構造函數(shù)

Headers.Headers()
創(chuàng)建一個新的Headers對象。

Headers 接口方法

Headers.append()
將新值添加到Headers對象內的現(xiàn)有標題上,或者添加標題(如果標題尚不存在)。
Headers.delete()
Headers對象中刪除標題。
Headers.entries()
返回一個iterator允許遍歷此對象中包含的所有鍵/值對。
Headers.forEach()
為每個數(shù)組元素執(zhí)行一次提供的函數(shù)。
Headers.get()
返回Headers對象中具有給定名稱的所有標頭值的ByteString序列。
Headers.has()
返回一個布爾值,指出Headers對象是否包含某個標題。
Headers.keys()
返回一個iterator允許您瀏覽包含在此對象中的鍵/值對的所有鍵。
Headers.set()
Headers對象內的現(xiàn)有標頭設置新值,或者在標頭尚不存在時添加標頭。
Headers.values()
返回一個iterator允許您瀏覽包含在此對象中的鍵/值對的所有值。

注意:需要弄清楚,Headers.set() 和 Headers.append() 之間的差異是:如果指定的標頭確實已經存在,并且不接受多個值,則 Headers.set() 將用新的值改寫現(xiàn)有數(shù)值,而 Headers.append() 將新的值追加到所述值的集合的末尾。查看他們的專用頁面,例如,代碼。

注意:如果您嘗試傳入不是有效 HTTP 標頭名稱的名稱的引用,則所有 Headers 方法都會拋出 TypeError。如果頭部有一個不可變的 Guard,則變異操作將會拋出一個 TypeError。在其他任何失敗情況下,他們都會失敗。

注意:當 Header 值被迭代時,它們會按字典順序自動排序,并且來自重復標題名稱的值被合并。

過時的方法

Headers.getAll()
用于返回具有給定名稱的Headers對象中所有頭的值的數(shù)組;此方法現(xiàn)在已從規(guī)范中刪除,Headers.get()現(xiàn)在返回所有值而不止是一個。

Headers接口示例

在下面的代碼片段中,我們使用 Headers() 構造函數(shù)創(chuàng)建一個新的頭文件,使用 append() 添加一個新的頭文件,然后使用 get() 返回該頭文件的值:

var myHeaders = new Headers();

myHeaders.append('Content-Type', 'text/xml');
myHeaders.get('Content-Type') // should return 'text/xml'

通過將數(shù)組或對象文本傳遞給構造函數(shù)可以實現(xiàn)相同的操作:

var 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'

規(guī)范

規(guī)范 狀態(tài) 注釋
Fetch
在該規(guī)范中'Headers題'的定義。
Living Standard
 

瀏覽器兼容性

新的兼容性表格處于測試階段

 
電腦端 移動端
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview
Chrome for Android
Edge Mobile Firefox for Android
Opera for Android
iOS Safari
基本支持 支持:42 支持 支持:39 不支持 支持:29 支持:10.1 支持:42 支持:42 ? 支持:44 支持:29 不支持
在迭代時合并重復標題名稱的字典排序和值。 ? 支持:44 不支持 支持:24 不支持 ? ? 不支持 ? 不支持
Headers() 構造函數(shù) 支持:42 ? 支持:39 不支持 支持:29 支持:10.1 支持:42 支持:42 不支持 支持:29 不支持
append

支持:42 支持 支持:39 不支持 支持:29 支持:10.1 支持:42 支持:42 支持 不支持 支持:29 不支持
delete

支持:42 支持 支持:39 不支持 支持:29 支持:10.1 支持:42 支持:42 支持 不支持 支持:29 不支持
entries 支持:45 支持:16 支持:44 ? 支持:32 ? 支持:45 支持:45 支持 支持:44 支持:32 ?
get

支持:42 支持
支持:52

不支持 支持:29 支持:10.1 支持:42 支持:42 支持 不支持 支持:29 不支持
getAll

不支持:42 - 60 支持 不支持:39-52 不支持 不支持:29 - 47 不支持 不支持:42 - 60 不支持:42 - 60 支持 不支持 不支持:29 - 47 不支持
has 支持:42 支持 支持:39 不支持 支持:29 不支持 支持:42 支持:42 支持 不支持 支持:29 不支持
keys 支持:45 支持:16 支持:44 ? 支持:32 支持:45 支持:45 支持 支持:44 支持:32 ?
set 支持:42 支持 支持:39 不支持 支持:29 不支持 支持:42 支持:42 支持 不支持 支持:29 不支持
values 支持:45 支持:16 支持:44 支持:32 ? 支持:45 支持:45 支持 支持:44 支持:32 ?
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號