NavigationPreloadManager: setHeaderValue() 方法

Baseline 已广泛支持

此功能已经非常成熟,可在多种设备和浏览器版本上使用。自 2022 年 4 月以来,它已在各大浏览器中得到支持。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

NavigationPreloadManager 接口的 setHeaderValue() 方法用于设置在服务工作线程导航预加载期间由 fetch() 操作产生的请求中发送的 Service-Worker-Navigation-Preload 标头的值。它返回一个空的 Promise,该 Promise 解析为 undefined

在预加载请求中包含 Service-Worker-Navigation-Preload 标头,可以使服务器能够为预加载的 fetch 请求配置与普通 fetch 请求不同的返回资源。默认指令设置为 true:此方法允许配置多个不同的响应以进行预加载请求的可能性。

注意: 如果设置此标头可能导致不同的响应,服务器必须设置 Vary: Service-Worker-Navigation-Preload 以确保不同响应被缓存。

语法

js
setHeaderValue(value)

参数

value

任意字符串值,目标服务器使用该值来确定要返回的请求资源。

返回值

一个 Promise,它会解析为 undefined

异常

InvalidStateError DOMException

与此 NavigationPreloadManager 所属的注册关联的没有活动工作线程。

示例

下面的代码演示了如何设置该值。

js
navigator.serviceWorker.ready
  .then((registration) =>
    registration.navigationPreload.setHeaderValue(newValue),
  )
  .then(() => console.log("Done!"))
  .catch((e) =>
    console.error(`NavigationPreloadManager not supported: ${e.message}`),
  );

规范

规范
Service Workers
# dom-navigationpreloadmanager-setheadervalue

浏览器兼容性