gpt4 book ai didi

javascript - 访问 cookie,希望在 JavaScript 中

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:10:24 25 4
gpt4 key购买 nike

我正在开发一个 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!');
}

执行此操作的最简单/最便携的方法是什么(当然是浏览器端)?

最佳答案

I have been looking at the Mozilla developer pages at nsICookie, nsICookie2, nsICookieManager, etc, and it doesn't make very clear sense how any of it fits into javascript or XUL or anything else.

可以从 Firefox 扩展访问所有 cookie,并使用 nsICookieManager 和 nsICookie 接口(interface)。从您的扩展程序中的 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 中定义界面。此代码是 Firefox 特定的,可以作为浏览器扩展或 signed script 运行.希望我的解释有所帮助。

下面我提供了一些在扩展中使用 JS XPCOM 接口(interface)的链接:

  1. JS XPCOM
  2. Using cookies

关于javascript - 访问 cookie,希望在 JavaScript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com