我正在尝试制作一个Google Chrome扩展程序,用于在网站设置/检索Cookie之前对其进行分析,如果它们不符合某些要求,则会停止操作。
首先,我试图完全阻止cookie设置。在尝试(并且失败)覆盖其getter和setter之后,我建议尝试修改标头及其Set-Cookie
元素。
如果有人对上一个问题感兴趣,那就是here。
我提出的扩展只有以下两个文件:
的manifest.json
{
"manifest_version": 2,
"name": "CookieStop",
"description": "Extension to filter cookies",
"version": "1.0",
"permissions": [
"<all_urls>",
"tabs",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
}
}
background.js
chrome.webRequest.onHeadersReceived.addListener(
function(details) {
for (var i = 0; i < details.responseHeaders.length; i++) {
if (details.responseHeaders[i].name === 'Set-Cookie') {
details.responseHeaders.splice(i, 1);
i--;
}
}
return {
responseHeaders: details.responseHeaders
};
}, {
urls: ["<all_urls>"]
}, ["blocking", "responseHeaders"]);
我制作了一个 background.js 的版本,它在剪贴板前后的每个标题中记录控制台,它似乎正确地删除了每个Set-Cookie
部分。
通过访问 en.wikipedia.org 测试结果,一旦访问它就设置了一些cookie,我会观察到以下行为。 如果没有扩展名,则会为 upload.wikimedia.org,wikipedia.org,en.wikipedia.org 设置Cookie。 使用扩展程序时, wikipedia.org 没有设置Cookie,但仍然为其他两个设置了Cookie。
我知道只允许一个扩展名来修改请求,我也只在启用了扩展程序的情况下对此进行了测试,但结果是相同的。
"<all_urls>"
应该停止来自任何域的Cookie,所以任何人都可以告诉我的扩展程序中确实存在哪些问题,即设置Cookie以及如何修复它?