最近我一直在玩饼干,我注意到当我创建一个值为“Hello,World!”的时候,我得到“你好”:
document.cookie = "testCookie=Hello, World!;";
有趣的是,如果我没有为“Hello,World!”添加空格,那么cookie的值仍然是我设置的:(“Hello,World!”)
document.cookie = "testCookie=Hello,World!;";
我唯一猜到为什么会发生这种情况是因为逗号和空格“,”结束了像分号和空格这样的Cookie“;”。是这样的,还是我做错了什么?
答案 0 :(得分:4)
您应该将值encodeURIComponent
用作MDN states:
cookie值字符串可以使用encodeURIComponent()来确保该字符串不包含任何逗号,分号或空格(在cookie值中不允许)。
答案 1 :(得分:0)
请参阅here了解Cookie中允许使用的字符,如果必须,请参阅de RFC 6265。
在Cookie值中:
* Comma is not allowed
* Space is not allowed
在Cookie名称(键)
中
* Comma is not allowed
* Space is not allowed
<强>结论强>
您尝试在cookie中使用的所有字符都不允许按照规范进行操作,因此如果您希望确保它适用于所有浏览器,则需要对其进行编码,否则行为未定义。
<强>建议强>
我推荐一个我和Klaus Hartl称之为js-cookie的项目,它之前被称为jquery.cookie,它试图记录和理解所有与浏览器相关的限制,以提供解决所有这些问题的模式。它适用于浏览器中的所有unicode字符。