【问题标题】:chrome Extension : Set persistent cookie in chrome extension?chrome 扩展:在 chrome 扩展中设置持久性 cookie?
【发布时间】:2021-10-28 17:02:25
【问题描述】:

我正在开发 chrome 扩展程序,我需要通过我的扩展程序设置 cookie 值。

我已通过以下方式设置 cookie:

chrome.cookies.set({ url: "http://example.com/", name: "CookieVar", value: "123" });

但是当我关闭浏览器时它在当前浏览器中可用,数据丢失了,所以我去

chrome.cookies.set({ url: "http://example.com/", name: "CookieVar", value: "123", expirationDate: 3600 });

但是从这里我看不到 cookie 信息是我在这里错过的任何东西。

【问题讨论】:

  • 您是否在manifest.json 中设置了this documentation 的权限?
  • 是的,我已经做到了......如果我没有设置过期日期,cookies 可以正常工作......
  • 在 background.js 中添加上面的代码然后它才会起作用。

标签: google-chrome google-chrome-extension


【解决方案1】:

您的到期日期似乎是1 Jan 1970 01:00(3600 等于 UNIX 纪元后 1 小时)。因此,您的 cookie 当然会被删除,因为它的过期日期已设置为过去。

您需要为您的 cookie 提供适当的过期日期。在documentationexpirationDate中定义为:

cookie 的过期日期,即自 UNIX时代

要设置相对于当前时间的 cookie,您需要按照 @pickled 的建议将秒数添加到 (new Date().getTime() / 1000)

【讨论】:

  • 我已经使用了:chrome.cookies.set({ url: "example.com", name: "CookieVar", value: "123", expirationDate: 3600 });那么它也不适合我
  • Berk 的评论仍然有效;您已将过期时间设置为纪元后一小时,或1 Jan 1970, 1:00:00 AM GMT
  • @Jimmy Sawczuk 抱歉,我无法理解您的观点,请解释一下。根据code.google.com/chrome/extensions/cookies.html,我必须传递我在代码中完成的整数值
  • 问题是你假设整数是相对于你设置cookie的时间;它不是。因此,要将到期日期设置为从现在起一小时后,您需要将其设置为 <now_timestamp> + 3600,或者,如果我现在要设置 cookie,则需要设置为 1313506823 + 3600
【解决方案2】:

如果您没有为 expireDate 设置值,那么 cookie 将在用户关闭浏览器时过期。

如果您确实设置了一个值,那么它必须是当前时间 + 到期前的秒数。 例如:

{expirationDate: (new Date().getTime()/1000) + 3600}

将其设置为当前时间,再加上 3600 秒,因此是未来一个小时。

您将其设置为 3600 后的基本 UNIX 时间,即 1970 年的开始,因此它立即过期。

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2019-10-11
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多