码迷,mamicode.com
首页 > 其他好文 > 详细

cookie的内容中含有特殊字符

时间:2019-05-30 17:41:21      阅读:376      评论:0      收藏:0      [点我收藏+]

标签:test   方法   height   sdn   version   问题   原因   net   兼容性   

背景

同事碰到的一个问题,存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的内容中含有特殊字符

标签:test   方法   height   sdn   version   问题   原因   net   兼容性   

原文地址:https://www.cnblogs.com/maochenhua/p/10950669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!