无法从onHeadersReceived访问cookie值

时间:2017-04-29 09:09:00

标签: google-chrome-extension

this example开始,我使用此代码:

chrome.webRequest.onHeadersReceived.addListener(
    function (details) {
        details.responseHeaders.forEach(function(responseHeader){
             console.log(responseHeader.name + "===" + responseHeader.value);
            if (responseHeader.name.toLowerCase() === "set-cookie") {
                responseHeader.value = processSetCookieStr(responseHeader.value);
            }
        });
        return {
            responseHeaders: details.responseHeaders
        };
    }, {
        urls: ["*://*/*"]
    }, ['blocking','responseHeaders']
);

但我无法在标题中看到任何Cookie。

对于main_frame类型,我已打印了值但Cookie不在那里:

  Cache-Control===private 
  Content-Type===text/html; charset=utf-8
  Server===Microsoft-IIS/7.5 
  X-AspNet-Version===4.0.30319
  X-Powered-By===ASP.NET 
  Date===Sat, 29 Apr 2017 08:51:45 GMT
  Content-Length===29880

虽然我可以使用chrome.cookies.get

获取所需的Cookie

为什么我无法访问onHeadersReceived中的Cookie信息?

1 个答案:

答案 0 :(得分:0)

您应该将“extraHeaders”添加到 webRequest 侦听器的第三个参数中,对于您的示例,它应该是 ['blocking','responseHeaders', 'extraHeaders']。

从 Chrome 72 开始,不提供 Set-Cookie 响应标头,如果不在 opt_extraInfoSpec 中指定 'extraHeaders',则无法修改或删除。

参考https://developer.chrome.com/docs/extensions/reference/webRequest/