通过修改标头来阻止cookie设置/检索

时间:2016-02-14 17:55:31

标签: javascript google-chrome cookies google-chrome-extension

我正在尝试制作一个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以及如何修复它?

0 个答案:

没有答案