我正在开发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。
答案 0 :(得分:6)
您可以使用nsICookieManager2
interface(原始的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
上公开然后