declarativeNetRequest.ModifyHeaderInfo

要修改的请求或响应头,在 rule.action.requestHeaders 数组或 rule.action.responseHeaders 数组中声明,适用于 rule.action.type 为 "modifyHeaders" 的规则。

每个对象描述一次头修改。要修改多个头,可以在这些数组中指定多个对象,或者跨多个规则进行指定。

匹配的 modifyHeaders 规则按照 匹配优先级 中描述的顺序应用。在每个扩展中,所有优先级低于或等于匹配的 allowallowAllRequests 规则的 modifyHeaders 规则都将被忽略。

如果有多个 modifyHeaders 规则指定了相同的头,则头结果的修改将根据每个规则的优先级和指定的操作来确定。

  • 如果规则已添加到某个头,则优先级较低的规则只能添加到该头。不允许执行 setremove 操作。
  • 如果规则已设置了某个头,优先级较低的规则不能修改该头,除非是来自同一扩展的 append 规则。
  • 如果规则已删除了某个头,优先级较低的规则不能修改该头。

类型

此类型的值是对象。它们包含以下属性:

一个 string。要修改的头的名称。

operation

一个 string。要对头执行的操作。可能的值为 "append""set""remove"

value 可选

一个 string。头的***新值***。必须为 append 和 set 操作指定。对 "remove" 操作不允许。

头限制

在 Chrome 中,"append" 支持以下请求头

  • Accept
  • Accept-Encoding
  • Accept-Language
  • Access-Control-Request-Headers
  • Cache-Control
  • Connection
  • Content-Language
  • Cookie
  • Forwarded
  • If-Match
  • If-None-Match
  • Keep-Alive
  • Range
  • Te
  • Trailer
  • Transfer-Encoding
  • Upgrade
  • Via
  • Want-Digest
  • X-Forwarded-For

在 Firefox 中,扩展需要针对 Host 头的新值拥有主机权限。

浏览器兼容性

webextensions.api.declarativeNetRequest.RuleAction.requestHeaders

webextensions.api.declarativeNetRequest.RuleAction.responseHeaders