Fetch API:Headers接口

2018-03-14 10:39 更新

Headers接口

Fetch API 的 Headers 接口允许对 HTTP 请求和响应头执行各种操作。这些操作包括检索、设置、添加和删除。一个 Headers 对象有一个关联的标题列表,它最初是空的,由零个或多个名称和值对组成。您可以使用像 append() 这样的方法添加到此处(请参阅示例)。在此 Headers 接口的所有方法中,标头名称均由不区分大小写的字节序列进行匹配。 

出于安全原因,某些标头只能由用户代理控制。这些标题包括禁止的标头名称和禁止的响应标头名称。

标头对象还有一个关联的保护,这需要 immutable,request,request-no-cors,response,或 none 的值。这会影响 set(),delete() 和 append() 方法是否会产生变异的头。

您可以通过 Request.headers 和 Response.headers 属性检索 Headers 对象,并使用 Headers.Headers() 构造函数创建一个新 Headers 对象。

一个 Headers 对象的实现可以直接用在一个 for...of 结构中,而不是 entries():for (var p of myHeaders),相当于 for (var p of myHeaders.entries())。

注意:您可以通过阅读我们的 HTTP 标头引用找到更多关于可用标头的信息。

Headers 接口构造函数

Headers.Headers()
创建一个新的Headers对象。

Headers 接口方法

Headers.append()
将新值添加到Headers对象内的现有标题上,或者添加标题(如果标题尚不存在)。
Headers.delete()
Headers对象中删除标题。
Headers.entries()
返回一个iterator允许遍历此对象中包含的所有键/值对。
Headers.forEach()
为每个数组元素执行一次提供的函数。
Headers.get()
返回Headers对象中具有给定名称的所有标头值的ByteString序列。
Headers.has()
返回一个布尔值,指出Headers对象是否包含某个标题。
Headers.keys()
返回一个iterator允许您浏览包含在此对象中的键/值对的所有键。
Headers.set()
Headers对象内的现有标头设置新值,或者在标头尚不存在时添加标头。
Headers.values()
返回一个iterator允许您浏览包含在此对象中的键/值对的所有值。

注意:需要弄清楚,Headers.set() 和 Headers.append() 之间的差异是:如果指定的标头确实已经存在,并且不接受多个值,则 Headers.set() 将用新的值改写现有数值,而 Headers.append() 将新的值追加到所述值的集合的末尾。查看他们的专用页面,例如,代码。

注意:如果您尝试传入不是有效 HTTP 标头名称的名称的引用,则所有 Headers 方法都会抛出 TypeError。如果头部有一个不可变的 Guard,则变异操作将会抛出一个 TypeError。在其他任何失败情况下,他们都会失败。

注意:当 Header 值被迭代时,它们会按字典顺序自动排序,并且来自重复标题名称的值被合并。

过时的方法

Headers.getAll()
用于返回具有给定名称的Headers对象中所有头的值的数组;此方法现在已从规范中删除,Headers.get()现在返回所有值而不止是一个。

Headers接口示例

在下面的代码片段中,我们使用 Headers() 构造函数创建一个新的头文件,使用 append() 添加一个新的头文件,然后使用 get() 返回该头文件的值:

var myHeaders = new Headers();

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

通过将数组或对象文本传递给构造函数可以实现相同的操作:

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'

规范

规范 状态 注释
Fetch
在该规范中'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() 构造函数 支持: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

公众号
微信公众号

编程狮公众号