你能在逗号中存储逗号吗?

时间:2015-10-23 17:14:16

标签: javascript cookies

最近我一直在玩饼干,我注意到当我创建一个值为“Hello,World!”的时候,我得到“你好”:

document.cookie = "testCookie=Hello, World!;";

有趣的是,如果我没有为“Hello,World!”添加空格,那么cookie的值仍然是我设置的:(“Hello,World!”)

document.cookie = "testCookie=Hello,World!;";

我唯一猜到为什么会发生这种情况是因为逗号和空格“,”结束了像分号和空格这样的Cookie“;”。是这样的,还是我做错了什么?

2 个答案:

答案 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字符。