事件描述
今天项目中碰到一个问题,存在cookie中的mac地址(形如AC:4A:FE:6F:2B:04
)在前端能够正常获取到,但是到了Java后台过去到的只有AC
,也就是冒号后面的都被截取掉了。
Cookie中不允许的特殊字符
查阅了相关文章,先自己总结一下。
cookie有2个版本,不同版本以及不同浏览器对于限制字符有所不同,一般而言越新的浏览器限制字符越少,但是为了以防万一,以下字符都不建议出现在cookie内容中:
空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号
HTTP 1.1规范中规定的特殊字符:
separators = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
解决方法
存入是先进行URL编码,取出时再解码,另一种思路就是干脆不用cookie,改用localStorage.