cookie的内容中含有特殊字符

Posted maochenhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie的内容中含有特殊字符相关的知识,希望对你有一定的参考价值。

背景

同事碰到的一个问题,存cookie的时候,对内容做了base64,所以结尾可能会含有等号,但是java中通过request.getCookies()获取cookie时,发现取到的值中缺少等号

 

原因

https://blog.csdn.net/hl_java/article/details/78908423上找到一段话

  • 我们在实际使用Cookie过程中要注意一些问题:

      1. Cookie的兼容性问题

      Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。

      2. Cookie的内容

      同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为“Test_Content”的原因。

      虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。

 

解决方法

存cookie的时候,对特殊字符做urlencode,取得时候做urldecode

 

以上是关于cookie的内容中含有特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

dom4j解析标签名中含有特殊字符报错

2020-12-05 hive sql 截取最后一个特殊字符后面的内容

Oracle更新表字段时内容中含有特殊字符&的解决方法

Oracle更新表字段时内容中含有特殊字符&的解决方法

利用JS判断字符串是不是含有数字与特殊字符的方法小结

java后台怎么解析含有特殊字符的json字符串,如含有逗号,冒号等特殊字符