如何在跨浏览器扩展中操作 webRequest cookie?

How to manipulate webRequest cookie in a cross-browser extension?

我正在尝试使用我正在创建的跨浏览器(支持 chrome 和 Firefox)扩展中的 webRequest 为所有 API 调用编辑 cookie

代码如下:

chrome.webRequest.onBeforeSendHeaders.addListener(
 data => { /* cookie manipulation logic */ },
 { urls: ['https://*/*'] },
 ['blocking', 'requestHeaders', 'extraHeaders']
);

问题: 在 Chrome 中,代码适用于 extraHeaders,而在 Firefox 中,相同的代码 也适用仅当删除 extraHeaders 时。我怎样才能让它在两种浏览器上工作?

以下是 Chrome 和 Firefox 的浏览器文档参考。

Chrome: Chrome 文档指出如果我们想要操作 cookie,则需要 extraHeaders。参考图片如下。参考link:Link

Firefox:

Firefox documentation 并没有告诉我们使用任何额外的规范来操纵 cookie。相反,当 extraHeaders 出现在 addListener.

的第三个参数中时,它会给出错误

API 为每个事件公开 chrome.webRequest.OnXXXXXXXXX 对象中的所有预定义常量,因此只有在新的 Chrome 中,此类对象才会具有 EXTRA_HEADERS 键和 extraHeaders value 而在 Firefox 和旧 Chrome 中它将是未定义的,可以通过 filter():

过滤掉
chrome.webRequest.onBeforeSendHeaders.addListener(
  listenerFunc,
  { urls: ['*://*/*'] },
  ['blocking', 'requestHeaders', 
   chrome.webRequest.OnBeforeSendHeadersOptions.EXTRA_HEADERS].filter(Boolean)
);