无法在Chrome中设置document.cookie

时间:2019-02-23 21:34:53

标签: javascript google-chrome firefox cookies

我想使用简单的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=/";

});

2 个答案:

答案 0 :(得分:0)

应使用分号空白而不是逗号分隔参数。


更改当前代码:

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=/";


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

答案 1 :(得分:0)

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