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

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

时间: 2024-11-08 12:55:41

cookie的内容中含有特殊字符的相关文章

js自动过滤替换页面文本框和文本域内容中的特殊字符并进行提示

在开发java web页面时需要校验用户的输入内容是否合法,在进行校验时我们可以单独把校验特殊字符这块抽取出来,只需要在每个页面引用下该js即可实现校验不需要再页面设置其他东西,js会自动捕捉页面文本框和文本域,同时也方便了以后代码的复用. 代码如下: var tagname=''; var attrid=''; var tagvalue=''; document.oninput = function(e){ var o = e.srcElement || e.target; getValue(

Oracle密码中含有特殊字符时exp,imp的使用

今天通过exp迁移Oracle 数据,由于密码含有很有很多特殊字符,弄了好久,都没成功,后发在网上找到方法. 1 exp用法Linux 下(密码用一对双引号, 整体userid用对单引号括住)exp 'skytf/"?`}:Q*H"@skytf'"<[email protected]#<>?`}:Q*H"@skytf' DIRECT=Y buffer=52428800 FEEDBACK=10000 statistics=none file=skyt

JQuery对id中含有特殊字符的转义处理

转载--http://www.jb51.net/article/41192.htm <div id="a[]">kkkkkk</div> <script type="text/javascript"> //方法1 $(document.getElementById('a[]')); //方法2 $('#a\\[\\]'); //方法3 $("div[id='a[]']"); </script>

水晶报表表的别名中含有特殊字符的处理

In Crystal Reports, the following error message is displayed when an invalid character is used in the database table alias name: Query Engine Error: “The alias requested “my\aliasname”, contains a combination of characters which is not considered to

ajax请求中传递的参数中如果含有特殊字符怎么处理?

在JQUERY AJAX开发中遇到了下面的一个问题,在执行AJAX请求的时候,需要传递一个“50%”的参数,而这个参数中含有特殊字符%.这样的话就会出现问题了,我们知道服务器在发送请求的时候,会将url中的参数转化成类似于“%2C%2F%3F%3A%40%26%3D%2B%24%23”,所以在我们执行含有这样特殊字符的ajax请求的时候就会出现错误,因为我们传递的参数可能发生了变化,也可能由于参数本身中就含有特殊字符所以系统没有办法编译它. 可能会抛出这样的一个异常: 警告: Parameter

web开发中常见特殊字符的对应值与转义字符

URL中的特殊字符: URL中的特殊字符是不能再URL中直接传递的,需要进行编码.编码的格式为:%加字符的ASCII码,即一个百分号 %,后面跟对应字符的ASCII(16进制)码值. 字符 名称 16进制值 + URL中的+表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20 / 分割目录和子目录 %2F ? 分隔实际的URL和字符 %3F % 指定特殊字符 %25 # 表示书签,URL传输参数时会自动截断#后面内容 %23 & URL中的参数分隔符 %26 = UEL中指定的参数值

Web.Config中使用特殊字符出错解决方法

程序代码 <appSettings>    <add key="URL" value="http://www.mzwu.com/?id=1&keyword=abc"/></appSettings> 运行出错,提示:分析 EntityName 时出错.原因是value中含有特殊字符"&",解决方法使用其对应的ASCII码"& #38;"替换即可: <appSett

基础篇_001_初识_Python文件内容中头两行的意义

相信有部分同学上网“欣赏”大佬的代码时,会注意到有些大佬喜欢在前面俩行加上两句注释,很好奇有什么作用,然后就用高中生物实验的研究方法——控制变量法——来研究,但是发现删除后并没有什么改变,所以感觉会有些懵B.但是在这里想跟大家说的是:不用怕,这个很简单,也不是很重要.理由就是:既然是注释,那就表明对于一般的人来说,这两句话是无关紧要的[滑稽].如果你确实很想知道这是啥.有何作用,那下面我就带领大家拨开这层迷雾! ----第一句:Python解释器的路径(只针对Linux操作系统下运行的Pytho

JQuery中的id选择器含有特殊字符时,不能选中dom元素的解决方法

1.jquery类库在我们实际项目中用的很多,大家经常需要根据控件的id,获取对应的html元素.但是:当id含有特殊字符的时候,是不能选中的. 2.自己简单的测试了下,jquery的id选择器只支持,单词.阿拉伯数字.下划线.中划线.其中单词,包括英文字母.汉字,但是控件id属于客户不可见内容,实际中开发人员是不用汉字作为id的,这里不考虑. 3.自己写了一个工具方法,开人人员只要将id转义后,jquery就能选中了,不用再考特殊字符的问题.代码是基于jquery1.6版本. function