Fetch API:Headers接口
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 | ? |
更多建议: