【问题标题】:document.cookie can't be set in Chrome无法在 Chrome 中设置 document.cookie
【发布时间】:2019-02-24 06:22:33
【问题描述】:

我想使用简单的 javascript 保存一个 cookie。所以我去了w3,他们有一个现成的功能来保存一个cookie。当我在 Firefox 中尝试此代码时,它完全按预期工作,但在 Chrome 中设置 cookie 无效。我在该站点上看到了其他问题,其中由于缺少过期日期而删除了 cookie,但我都将日期设置为几天后,而 document.cookie 从未设置过。我在调试器中逐行浏览了代码,但 document.cookie 的值甚至在该行之后仍然是一个空字符串:

document.cookie = cname + "=" + cvalue + ", " + expires + ", path=/ ;";

我已经尝试过,无论是否有路径和/或到期日期,但似乎没有任何效果。我该怎么办?

@AndrewL64 要求的有关我的文件的一些额外信息: 我做了一个 1 页的 html 游戏。我有一个 index.html 文件、一个 mainstyle.css 文件和一个用于脚本的 main.js 文件。在我的脚本中,我使用 JQuery 来操作 DOM 元素。我将代码放在页面加载事件中,如下所示:

//==================On Page Load ===================================
$(document).ready(function () {

    $("#gameContainer").hide();
    $("#mainContainer").hide();
    //$("#startContainer").hide();
    $("#skillsContainer").hide();


    prepareGame();
    //startGame();

    /*var cookieName = "sp_str_cookie_save1";
    var saveString = "some value";
    setCookie(cookieName, saveString, 10);
    var cookieResult = getCookie(cookieName);*/
    const cname = "someCookie";
    const expires = "Thu, 2 Aug 2020 20:47:11 UTC";
    const cvalue = "someValue";

    document.cookie = cname + "= " + cvalue + "; " + "expires=" + expires + "; " + "path=/";

});

【问题讨论】:

    标签: javascript google-chrome firefox cookies


    【解决方案1】:

    我在另一个 Stackoverflow 问题 here 中找到了答案。简而言之,有些浏览器在本地打开 html 文件时不会设置 cookie。例如 Chrome 没有,但 Firefox 有。因此,如果您离线工作,请在 Firefox 中测试 cookie。

    【讨论】:

    • 哇不错,这确实是我的问题。
    【解决方案2】:

    参数应该用分号空格分隔,而不是逗号


    从此更改您当前的代码:

    document.cookie = cname + "=" + cvalue + ", " + expires + ", path=/ ;";
    

    到这里:

    document.cookie = cname + "= " + cvalue + "; " + expires + "; " + "path=/";
    

    检查并运行此 JSFiddle,其中包含以下 代码片段,然后检查您的浏览器 cookie 以查看添加的新 cookie:

    const cname = "someCookie";
    const expires = "Thu, 2 Aug 2020 20:47:11 UTC";
    const cvalue = "someValue";
    
    document.cookie = cname + "= " + cvalue + "; " + "expires=" + expires + "; " + "path=/";

    注意上面的代码片段不会设置 cookie,因为 sn-p 环境只是一个沙箱并且缺少“allow-same-origin”标志。检查 JSFiddle 以查看上面的 JavaScript 将 cookie 添加到浏览器。

    【讨论】:

    • 感谢您的评论。我尝试了小提琴中的代码并且有效。但是当我将这个确切的代码添加到我的页面时,它不起作用。而且我不知道为什么,因为在 Firefox 中我的旧代码已经工作了。即使格式不完全正确,document.cookie 在设置后仍应包含某些内容。
    • @SvG 这很奇怪。您能否发布您目前如何将 JavaScript 添加到您的网页?
    • 您可以尝试使用Ctrl + F5 强制刷新您的网页,看看是否添加了cookie?
    • 很抱歉,这似乎是我自己的错。你的问题让我思考并在this question 中找到了答案。如果通过本地打开 html 文件来测试网站,有些浏览器不会设置 cookie。
    猜你喜欢
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2014-05-19
    • 2023-03-06
    • 2020-11-10
    • 2016-02-27
    • 1970-01-01
    • 2016-07-16
    相关资源
    最近更新 更多