如何在跨浏览器扩展中操作 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)
);
我正在尝试使用我正在创建的跨浏览器(支持 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)
);