Headers

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Some parts of this feature may have varying levels of support.

备注: 此特性在 Web Worker 中可用。

Fetch APIHeaders 接口允许你对 HTTP 请求和响应头执行各种操作。这些操作包括检索,设置,添加和删除。

一个 Headers 对象具有关联的标头列表,它最初为空,由零个或多个键值对组成。你可以使用类似于 append() 这样的方法添加(参见示例)到这个对象中。在该接口的所有方法中,标头名称由不区分大小写的字节序列匹配。

出于安全考虑,某些标头只能由用户代理控制。这些标头包括禁止修改的请求标头禁止修改的响应标头

一个 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()).

备注: 你可以通过阅读我们的 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 的值

js
let myHeaders = new Headers();

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

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

规范

Specification
Fetch
# headers-class

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Headers
[Symbol.iterator]
Headers() constructor
append
delete
entries
forEach
get
getSetCookie
has
Iteration combines duplicate header names
Iteration is lexicographically sorted
keys
set
values

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

参见