2.3 Response.headers 属性

Response 对象还有一个Response.headers属性,指向一个 Headers 对象,对应 HTTP 回应的所有标头。

Headers 对象可以使用for...of循环进行遍历。

  1. const response = await fetch(url);
  2. for (let [key, value] of response.headers) {
  3. console.log(`${key} : ${value}`);
  4. }
  5. // 或者
  6. for (let [key, value] of response.headers.entries()) {
  7. console.log(`${key} : ${value}`);
  8. }

Headers 对象提供了以下方法,用来操作标头。

  • Headers.get():根据指定的键名,返回键值。
  • Headers.has(): 返回一个布尔值,表示是否包含某个标头。
  • Headers.set():将指定的键名设置为新的键值,如果该键名不存在则会添加。
  • Headers.append():添加标头。
  • Headers.delete():删除标头。
  • Headers.keys():返回一个遍历器,可以依次遍历所有键名。
  • Headers.values():返回一个遍历器,可以依次遍历所有键值。
  • Headers.entries():返回一个遍历器,可以依次遍历所有键值对([key, value])。
  • Headers.forEach():依次遍历标头,每个标头都会执行一次参数函数。

上面的有些方法可以修改标头,那是因为继承自 Headers 接口。对于 HTTP 回应来说,修改标头意义不大,况且很多标头是只读的,浏览器不允许修改。

这些方法中,最常用的是response.headers.get(),用于读取某个标头的值。

  1. let response = await fetch(url);
  2. response.headers.get('Content-Type')
  3. // application/json; charset=utf-8

Headers.keys()Headers.values()方法用来分别遍历标头的键名和键值。

  1. // 键名
  2. for(let key of myHeaders.keys()) {
  3. console.log(key);
  4. }
  5. // 键值
  6. for(let value of myHeaders.values()) {
  7. console.log(value);
  8. }

Headers.forEach()方法也可以遍历所有的键值和键名。

  1. let response = await fetch(url);
  2. response.headers.forEach(
  3. (value, key) => console.log(key, ':', value)
  4. );