从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
为什么我无法访问onHeadersReceived
中的Cookie信息?
答案 0 :(得分:0)
您应该将“extraHeaders”添加到 webRequest 侦听器的第三个参数中,对于您的示例,它应该是 ['blocking','responseHeaders', 'extraHeaders']。
从 Chrome 72 开始,不提供 Set-Cookie 响应标头,如果不在 opt_extraInfoSpec 中指定 'extraHeaders',则无法修改或删除。
参考https://developer.chrome.com/docs/extensions/reference/webRequest/