在Firefox扩展中按域名/名称访问特定的cookie

5

我正在开发一个Firefox扩展程序,需要访问特定域名下的特定cookie。我有以下代码可以获取所有域名下的所有cookie,如何仅请求我要查找的cookie。

var {Cc, Ci} = require("chrome");

var cookieManager = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager);

var count = cookieManager.enumerator;

while (count.hasMoreElements()){
    var cookie = count.getNext();
    if (cookie instanceof Ci.nsICookie){
        console.log(cookie.host);
        console.log(cookie.name);
        console.log(cookie.value);
    }
}

总之,使用上述代码我能够找到我需要的cookie,但我不想遍历所有域中的所有cookie。
1个回答

6
您可以使用nsICookieManager2接口(原始的nsICookieManager接口被冻结,无法更改,因此创建了这个扩展版本):
var cookieManager = Cc["@mozilla.org/cookiemanager;1"]
                      .getService(Ci.nsICookieManager2);
var count = cookieManager.getCookiesFromHost("example.com");

注意:在Gecko 2.0(Firefox 4)中,冻结接口的概念已被取消。从那时起,一些类似于nsICookieManager/nsICookieManager2的接口已经统一 - 因此,在将来的Firefox版本中,nsICookieManager2可能也会消失,所有功能都将在nsICookieManager上公开。

请提供一个示例,说明如何从getCookiesFromHost返回的迭代器中获取cookie。 - MeLight
1
完整的示例可以在这里找到:https://developer.mozilla.org/zh-CN/docs/Code_snippets/Cookies - MeLight
@Wladimir Palant 有没有一种方法可以从 Firefox 扩展中删除所有的 Cookies? - Muthu
@muthu:使用nsICookieManager.removeAll()怎么样? - Wladimir Palant
有没有一种方法可以获取Firefox浏览器的所有cookie,而不是基于hostName获取cookie? - Muthu
@muthu:如果你不想阅读文档,那么阅读一下这个问题的文字怎么样? - Wladimir Palant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接