JavaScript代码的cookie不工作在Chrome

aoyhnmkz  于 2023-05-20  发布在  Go
关注(0)|答案(6)|浏览(212)

下面的代码在FF中工作正常:

var date = new Date();
date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toGMTString();
document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/";

但不是Chrome。当我使用Chrome浏览器并在控制台中执行document.cookie以查看cookie时,c_odi cookie不存在。但是当我在FF中做同样的事情时,它就是了。如何让cookies在Chrome中工作?PHP添加的cookie是好的,但不是JavaScript中的这个,此时我确实需要通过JavaScript添加这个cookie。

gev0vcfq

gev0vcfq1#

如果您以file:///C:/.../xxx.html而不是http:// localhost/xxx.html打开代码,则可能会出现此问题。Chrome在file://的情况下不保存cookie(因为没有域和http通信)。
几个感兴趣的链接:

8yparm6h

8yparm6h2#

Chrome不存储从本地文件系统加载的页面的cookie。例如,如果您在Chrome浏览器中从本地文件系统(例如:file:///C:/Users/deepak.r/Desktop/test.html),不支持cookie。

jutyujz0

jutyujz03#

尝试替换此行:

document.cookie = "c_odi" + "=" + $('#orderdetailid').val() + expires + "; path=/";

用这个

document.cookie = "c_odi" + "=" + escape($('#orderdetailid').val()) + expires + "; path=/";

当你试图读取值时,你必须使用unescape,但当时间到了,你会注意到:)

emeijp43

emeijp434#

似乎对我很有效:

http://jsfiddle.net/rQEnF/3/
如您所见,至少cookie显示在开发工具中。但是,我将jQuery选择器$('#orderdetailid').val()替换为常量值,如您所见。是该值或包含该值的元素有问题吗?

czq61nw1

czq61nw15#

确保您的地址栏url与域匹配。在Chrome中,如果您设置domain= www.site.com,然后在浏览器中测试您的页面,则会遗漏www.那是行不通的

1qczuiv0

1qczuiv06#

当在chrome中以file://打开HTML文件时,作为一种解决方法,使用会话存储而不是cookie。当然,会话存储不具有与cookie完全相同的功能,但在某些情况下可能会有所帮助。
sessionStorage.setItem("some_property", "true"); sessionStorage.getItem("some_property");

相关问题