代码之家  ›  专栏  ›  技术社区  ›  HeScm

通过单击按钮删除Cookie-Web扩展API

  •  1
  • HeScm  · 技术社区  · 7 年前

    我第一次使用Firefox Web扩展API。我想删除示例中的所有cookie。通过单击按钮。我有以下代码,但没有得到任何结果。

    出身背景js公司

    function onRemoved(cookie) {
      console.log(`Removed: ${cookie}`);
    }
    
    function onError(error) {
      console.log(`Error removing cookie: ${error}`);
    }
    
    function removeCookie() {
      var removing = browser.cookies.remove({
        url: "example.com"
      });
      removing.then(onRemoved, onError);
    }
    
    browser.browserAction.onClicked.addListener(removeCookie);
    

    显示json

    {
    
     "description": "RemoveCookie",
     "manifest_version": 2,
     "name": "remove-cookies",
     "version": "1.0",
     "icons": {
     "48": "icons/icon.png"
     },
    
    "background": {
     "scripts": ["background.js"]
    },
    
    "browser_action": {
      "default_icon": "icons/icon.png",
      "default_title": "Remove Cookie!"
    },
    
    "permissions": [
     "*://*.example.com/*",
     "cookies"
    ]
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Maluen    7 年前

    从…起 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/remove

    cookies API的remove()方法删除给定名称和URL的cookie。

    这意味着您还需要指定 name 参数

    url 参数必须包括协议,否则承诺将通过解决 null (意味着找不到cookie)。

    如果找不到与details参数匹配的cookie,则使用null来实现承诺。


    也就是说,你可以使用 browser.cookies.getAll 要获取给定URL的所有cookie,然后删除给定名称的每个cookie:

    function onRemoved(cookies) {
      console.log('Removed', cookies);
    }
    
    function onError(error) {
      console.log(`Error removing cookie: ${error}`);
    }
    
    function removeCookie() {
      var url = "http://example.com"; // NOTE the full url including protocol
      browser.cookies.getAll({ url: url })
      .then(function(cookies) {
        return Promise.all(cookies.map(function(cookie) {
          return browser.cookies.remove({ url: url, name: cookie.name });
        }));
      })
      .then(onRemoved, onError);
    }
    
    browser.browserAction.onClicked.addListener(removeCookie);