访问cookie,希望用JavaScript

3 javascript cookies xul add-on

我正在开发一个Firefox插件,允许用户(所有用户都是特定组的一部分;此插件在受众范围内非常有限)从状态栏查看其身份验证cookie的状态.我们都必须进行身份验证才能访问与工作相关的站点,但是当cookie过期时我们不会收到任何警告,因此这会导致工作流程中出现烦人且有时严重的中断.最后,这个添加将允许我们从状态栏提交我们的凭据,而不必去做任何重新加载或重定向,但是现在,我只是想看到它显示状态.

我一直在查看nsICookie,nsICookie2,nsICookieManager等的Mozilla开发人员页面,它并没有非常清楚地知道它是如何适应JavaScript或XUL或其他任何东西的.

理想情况下,我只是想让JavaScript走出文档并获取我指定的域的cookie字符串.如果我能做到这一点,它将允许代码可能被移植到其他浏览器(特别是Safari和Chrome).但是,如果这必须是特定于浏览器的,那么我至少想知道检查cookie是否存在于Firefox中的方法,而没有任何设置或删除的功能.

简单地说,我想要一种说法:

 if (cookieExists("sample.com", CookieName)) {
     alert("You're signed in!");
 } else {
     alert('Go sign in, you fool!');
 }
Run Code Online (Sandbox Code Playgroud)

什么是最简单/最便携的方式(当然是浏览器方面)?

Raf*_*ael 5

我一直在查看nsICookie,nsICookie2,nsICookieManager等的Mozilla开发人员页面,它并没有非常明确地了解它是如何适应javascript或XUL或其他任何内容的.

可以访问Firefox扩展中的所有cookie,并使用nsICookieManager和nsICookie接口.从您的扩展程序中的JavaScript代码,您可以访问cookie管理器

var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager);
Run Code Online (Sandbox Code Playgroud)

而且你可以迭代所有存储的cookie

var enum = cookieManager.enumerator;
while (enum.hasMoreElements()){
   var cookie = enum.getNext();
   if (cookie instanceof Components.interfaces.nsICookie){
      // commands
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,当引用cookie对象时,您可以检查其属性

cookie.host
cookie.name
cookie.value
...
Run Code Online (Sandbox Code Playgroud)

nsICookie界面中定义.此代码特定于Firefox,可以作为浏览器扩展或签名脚本运行.希望我的解释有所帮助.

下面我介绍一些在扩展中使用JS XPCOM接口的链接:

  1. JS XPCOM
  2. 使用cookies