cookie特殊字符
本文由 小茗同学 发表于 2016-06-24 浏览(5673)
最后修改 2016-06-24 标签:cookie 特殊 字符

事件描述

今天项目中碰到一个问题,存在cookie中的mac地址(形如AC:4A:FE:6F:2B:04)在前端能够正常获取到,但是到了Java后台过去到的只有AC,也就是冒号后面的都被截取掉了。

Cookie中不允许的特殊字符

查阅了相关文章,先自己总结一下。

cookie有2个版本,不同版本以及不同浏览器对于限制字符有所不同,一般而言越新的浏览器限制字符越少,但是为了以防万一,以下字符都不建议出现在cookie内容中:

空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号

HTTP 1.1规范中规定的特殊字符:

separators    =   "(" | ")" | "<" | ">" | "@"
    | "," | ";" | ":" | "\" | <">
    | "/" | "[" | "]" | "?" | "="
    | "{" | "}" | SP | HT

解决方法

存入是先进行URL编码,取出时再解码,另一种思路就是干脆不用cookie,改用localStorage.