Headers

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

出于安全考虑,某些头只能由用户代理控制。这些头信息包括 forbidden header names  和 forbidden response header names (en-US)

一个Headers对象也有一个关联的guard,它具有不可变的值,requestrequest-no-corsresponsenone。 这会影响 set(), delete(), 和append() 方法 改变header. 参考更多信息,请看 Guard.

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

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

Note: 您可以通过阅读我们的 HTTP headers参考找到更多关于可用headers的信息。

构造函数

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

方法

Headers.append()
给现有的header添加一个值, 或者添加一个未存在的header并赋值.
Headers.delete()
从Headers对象中删除指定header.
Headers.entries()
迭代器 的形式返回Headers对象中所有的键值对.
Headers.get()
ByteString 的形式从Headers对象中返回指定header的全部值.
Headers.has()
以布尔值的形式从Headers对象中返回是否存在指定的header.
Headers.keys()
迭代器的形式返回Headers对象中所有存在的header名.
Headers.set()
替换现有的header的值, 或者添加一个未存在的header并赋值.
Headers.values()
迭代器的形式返回Headers对象中所有存在的header的值.

Note: 值得注意的是,在header已存在或者有多个值的状态下Headers.set()Headers.append()的使用有如下区别, Headers.set() 将会用新的值覆盖已存在的值, 但是Headers.append()会将新的值添加到已存在的值的队列末尾. 请参相关词条内的示例代码.

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

Obsolete methods

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

示例

在这个小示例中, 我们将会通过Headers构造函数创建一个新的header, 先使用append()方法添加一个header, 然后通过get()方法返回这个header的值

let myHeaders = new Headers();

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

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

规范

Specification Status Comment
Fetch
Headers
Living Standard  

浏览器兼容性

BCD tables only load in the browser

相关链接