java.lang.IllegalArgumentException: Control character in cookie value or attribute.
来源:互联网 发布:阳春网络歌手思维 编辑:程序博客网 时间:2024/04/30 00:11
eclipse中有两个项目,一个项目有使用cookie,该项目使用jetty布署,做了一些操作然后关闭。后来使用操作另一个没有使用cookie的项目,使用tomcat7布署,出现问题
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
问题1、刚看到这个问题我很奇怪,因为我的项目没有用上cookie,怎么会提示cookie的错误呢。
原因:因为都是使用本地的浏览器,即使用同一个域名,cookie是根据域名区分的,如果是同一个域名则会把所有的cookie内容带到后台
说明该问题的出现是因为浏览器中有cookie的缓存,其中有些问题导致的。
解决方法:清除浏览器缓存,是OK的,该问题得到解决
问题2、那cookie中到底有什么问题导致的呢,为什么第一个项目中没有出现该问题呢
原因:tomcat7之后,tomcat有对cookie合法性的校验,cookie中的有效字符为ascii码值在32-127之间,以及制表符\t。而cookie中中文导致该问题.jetty没有该限制所有没问题
问题3、既然cookie设置的有问题,那应该怎么解决呢
设置cookie的时候使用对字符串编码的函数,取cookie的时候进行解码
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。
escape() 不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
encodeURI() 不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent()该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
总结:encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参 数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
问题1、刚看到这个问题我很奇怪,因为我的项目没有用上cookie,怎么会提示cookie的错误呢。
原因:因为都是使用本地的浏览器,即使用同一个域名,cookie是根据域名区分的,如果是同一个域名则会把所有的cookie内容带到后台
说明该问题的出现是因为浏览器中有cookie的缓存,其中有些问题导致的。
解决方法:清除浏览器缓存,是OK的,该问题得到解决
问题2、那cookie中到底有什么问题导致的呢,为什么第一个项目中没有出现该问题呢
原因:tomcat7之后,tomcat有对cookie合法性的校验,cookie中的有效字符为ascii码值在32-127之间,以及制表符\t。而cookie中中文导致该问题.jetty没有该限制所有没问题
问题3、既然cookie设置的有问题,那应该怎么解决呢
设置cookie的时候使用对字符串编码的函数,取cookie的时候进行解码
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 。
escape() 不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
encodeURI() 不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
encodeURIComponent()该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
总结:encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。escape()除了 ASCII 字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI() 用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参 数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
0 0
- java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- java.lang.IllegalArgumentException: Control character in cookie value or attribute
- java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- java.lang.IllegalArgumentException: Control character in cookie value or attribute
- java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- java.lang.IllegalArgumentException: Control character in cookie value or attribute
- servlet 设置cookie遇到java.lang.IllegalArgumentException: Control character in cookie value or attribute
- IllegalArgumentException: Control character in cookie value or attribute Tomcat7中文写入cookie时引发异常
- Jsp 出现异常IllegalArgumentException:Control character in cookie value or attribute解决方法
- Tomcat报错Control character in cookie value or attribute.
- tomcat7中cookie写入中文引发Control character in cookie value or attribute异常
- tomcat7中cookie写入中文引发Control character in cookie value or attribute异常
- java.lang.IllegalArgumentException: An invalid character [44] was present in the Cookie value
- 【Java Web】control character in cookie value orattribute
- java Cookie 存储汉字报Control character in cookie value, consider BASE64 encoding your value
- Control character in cookie value, consider BASE64 encoding your value
- TPC-H数据导入MySQL教程
- 一些超级基础&常用的opencv功能
- ceil() 与 floor() 与 round()
- intellij 报inspects a maven model for resolution problems
- Django信号系统简介
- java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- Android Butterknife浅分析
- Zedboard上运行Linaro系统(三):编译内核和设备树
- GDB十分钟教程
- spring-boot-mybatis 学习资料整理
- mysql压缩包的实际安装记录
- php环境变量:$ENV
- POJ-1608-Parencodings
- Java设计模式—— 观察者模式