Headers
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2017年3月.
* Some parts of this feature may have varying levels of support.
备注: 此特性在 Web Worker 中可用。
Fetch API 的 Headers 接口允许你对 HTTP 请求和响应头执行各种操作。这些操作包括检索,设置,添加和删除。
一个 Headers 对象具有关联的标头列表,它最初为空,由零个或多个键值对组成。你可以使用类似于 append() 这样的方法添加(参见示例)到这个对象中。在该接口的所有方法中,标头名称由不区分大小写的字节序列匹配。
出于安全考虑,某些标头只能由用户代理控制。这些标头包括禁止修改的请求标头和禁止修改的响应标头。
一个 Headers 对象也有一个关联的 guard,它具有不可变的值,request,request-no-cors,response或none。这会影响 set(), delete(), 和append() 方法 改变 header. 参考更多信息,请看 Guard.
你可以通过 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()-
给现有的 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 的值。
备注:
值得注意的是,在 header 已存在或者有多个值的状态下Headers.set() 和 Headers.append()的使用有如下区别,Headers.set() 将会用新的值覆盖已存在的值,但是Headers.append()会将新的值添加到已存在的值的队列末尾。请参相关词条内的示例代码。
备注:
如果你尝试传入名称不是有效的 HTTP 标头名称的引用,则所有 Headers 方法都将引发 TypeError。如果标头具有不可变的 Guard,则突变操作会引发 TypeError。在任何其他失败情况下,它们都会无声地失败。
示例
在这个小示例中,我们将会通过 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 |
|---|
| Fetch> # headers-class> |
浏览器兼容性
Loading…