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 .
Fetch API 的 Headers 接口允许你对 HTTP 请求和响应头执行各种操作。这些操作包括检索,设置,添加和删除。
一个 Headers 对象具有关联的标头列表,它最初为空,由零个或多个键值对组成。你可以使用类似于
append()
这样的方法添加(参见
示例
)到这个对象中。在该接口的所有方法中,标头名称由不区分大小写的字节序列匹配。
出于安全考虑,某些头只能由用户代理控制。这些头信息包括 forbidden header names 和 forbidden response header names 。
一个 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
。在任何其他失败情况下,它们都会无声地失败。