我正在开发一个 Firefox 插件,它允许用户(所有用户都属于特定组;该插件的受众范围非常有限)从状态栏查看其身份验证 cookie 的状态。我们都必须进行身份验证才能访问与工作相关的网站,但是当 cookie 过期时我们不会收到任何警告,因此这会导致工作流程中令人烦恼的、有时甚至是严重的中断。最终,这个附加组件将允许我们从状态栏提交我们的凭据,而无需执行任何重新加载或重定向,但现在,我只想看到它显示状态。
我一直在查看 Mozilla 开发人员页面的 nsICookie、nsICookie2、nsICookieManager 等,但并没有很清楚地了解它们如何适合 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!');
}
执行此操作最简单/最便携的方法是什么(当然是浏览器端)?
我一直在查看 Mozilla 开发人员页面的 nsICookie、nsICookie2、nsICookieManager 等,但并没有很清楚地了解它们如何适合 javascript 或 XUL 或其他任何内容。
可以从 Firefox 扩展访问所有 cookie,并使用 nsICookieManager 和 nsICookie 接口。通过扩展程序中的 javascript 代码,您可以使用以下命令访问 cookie 管理器
var cookieManager = Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager);
并且您可以遍历所有存储的 cookie
var enum = cookieManager.enumerator;
while (enum.hasMoreElements()){
var cookie = enum.getNext();
if (cookie instanceof Components.interfaces.nsICookie){
// commands
}
}
现在,当引用 cookie 对象时,您可以检查它的属性
cookie.host
cookie.name
cookie.value
...
定义于nsICookie https://developer.mozilla.org/en/nsICookie界面。此代码是 Firefox 特定的,可以作为浏览器扩展运行或签名脚本 http://www.mozilla.org/projects/security/components/signed-scripts.html。希望我的解释有一点帮助。
下面我提供了一些在扩展中使用 JS XPCOM 接口的链接:
- JS XPCOM https://developer.mozilla.org/en/Code_snippets/JS_XPCOM
- 使用cookie https://developer.mozilla.org/en/XUL_Tutorial/XPCOM_Examples#Cookies
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)