特别是,将JSON保存到cookie时,只保存原始值是安全的吗?
我不想编码的原因是因为json具有较小的值和键但结构复杂,因此编码,替换所有“,:和{},大大增加了字符串长度
答案 0 :(得分:2)
如果你的值包含“JSON字符”(例如逗号,引号,[]等),那么你应该使用encodeURIComponent,这样它们就会被转义,并且在读取值时不会破坏你的代码。
答案 1 :(得分:2)
您可以使用JSON.stringify()方法将JSON对象转换为字符串,然后将其保存在cookie中。
请注意,Cookie的字符数限制为4000。
如果您的Json字符串有效,则不需要对其进行编码。
e.g。
JSON.stringify({a:'foo"bar"',bar:69});
=> '{"a":"foo\"bar\"","bar":69}'
有效的json叮咬被转义。
答案 2 :(得分:1)
在MDN
上记录得很清楚为避免对服务器发出意外请求,您应该在任何用户输入的参数上调用 encodeURIComponent ,这些参数将作为URI的一部分传递。例如,用户可以为变量注释键入“Thyme& time = again”。在此变量上不使用 encodeURIComponent 将再次给出comment = Thyme%20& time =。请注意,&符号和等号表示新的键和值对。因此,不是让POST注释键等于“Thyme& time = again”,而是有两个POST键,一个等于“Thyme”,另一个(时间)等于。
答案 3 :(得分:0)
Cookie: name=value; name2=value2
空格是HTTP Cookie标头中cookie分离的一部分。因此,cookie值中的原始空格可能会使服务器混淆。