java.lang.IllegalArgumentException: Control character in cookie value or attribute.

该异常说明cookie中的value或属性有控制字符,但是我设置的value并没有特殊字符。
初步怀疑是中文编码问题,于是在将字符串进行base64编码之前先用Cookie cookie = new Cookie("name", URLEncoder.encode(str, "UTF-8"));将原字符串先进行utf-8编码,但是结果还会有如上异常。
把原来字符串中的中文去掉,用英文代替,尝试结果还是失败,看来不是字符串编码问题。

从网上检索相关资料如下:
Cookie的长度限制:
(1) 浏览器所允许的每个域下的最大cookie数目,从网上找到的资料大概是这么个情况 
IE :原先为20个,后来升级为50个 
Firefox: 50个 
Opera:30个 
Chrome:180个 
Safari:无限制

当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。

(2) 浏览器所允许的每个Cookie的最大长度 
Firefox和Safari:4079字节 
Opera:4096字节 
IE:4095字节

我们这里关心的是cookie最大长度,IE支持的最大cookie长度可达4095字节,但是这个长度应该是整个cookie对象的大小,如何计算还不清楚。
我这边IE9测试结果是,value的长度最大是76个字符,这个是经过base65编码后的,编码前的原始字符串长度要比这个更小。
另外,尝试将cookie的name长度减小,发现value的最大支持长度还是没变,应该是个固定值。
如果要保存比较多的数据,要么使用多个cookie,要么保存数据库的id等关键信息,下次取出后再查询数据库或读文件等。

以上的解决办法都尝试了,虽然系统运行正常,cookie也保存了,也可以正常记住密码并且登录。可是后台还是报错Control character in cookie value or attribute

后来才发现测试服务器环境与本地开发环境不一样,测试服务器Tomcat为7.0版本,而本地开发环境tomcat为8.5,

环境不统一就会出现各种千奇百怪的异常,在此提醒大家开发环境、测试、正式环境软件版本一定要统一!!!

cookie遇到java.lang.IllegalArgumentException: Control character in cookie value or attribute的更多相关文章

  1. Cookie存储中文报错:java.lang.IllegalArgumentException: Control character in cookie value or attribute.(转)

    项目中做自动登录和保存密码时,Cookie报错Java.lang.IllegalArgumentException,上google查了下 在http://hi.baidu.com/xtxycy/blo ...

  2. tomcat使用cookies缓存的时候中文报错解决办法 java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    报错出现 java.lang.IllegalArgumentException: Control character in cookie value or attribute. at org.apac ...

  3. 异常:java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    后台提示: 严重: Error processing requestjava.lang.IllegalArgumentException: Control character in cookie va ...

  4. HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: ...

  5. 创建Cookie抛出异常:java.lang.IllegalArgumentException: Control character in cookie value

    调用Cookie对象的构造函数可以创建Cookie.Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值.   名字和值都不能包含空白字符以及下列字符:[ ] ( ) < ...

  6. 在浏览器访问Tomcat的时候报错java.lang.IllegalArgumentException: Control character in cookie value or attribute.

    出现这种情况的原因就是因为cookie中存在中文或者特殊符号造成的,应为Tomcat7不支持 解决方法: 1,首先必须先删除本地的cookie,否则项目无法访问 2,然后调整编码就行了

  7. 解决Tomcat的IllegalArgumentException: Control character in cookie value or attribute错误

    接口中带有中文,tomcat8 17-Apr-2019 13:21:23.734 严重 [http-nio-8082-exec-2] org.apache.coyote.http11.Abstract ...

  8. java.lang.IllegalArgumentException: Illegal character in query at index 261

    在BaseFragment中使用了LoadingPage,而LoadingPage的联网加载使用的是AsyncHttpClient.一直报java.lang.IllegalArgumentExcept ...

  9. Tomcat v7.0 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    十二月 , :: 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request ...

随机推荐

  1. 第09组 Alpha冲刺(4/4)

    队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...

  2. 如何使用Salt Pillar

    作者言 Salt的网站上有两篇关于Pillar的文档(一,二),其中一篇内容很少,我觉得写成一篇文章更合适.本文的逻辑结构没有参照官方文档,而是根据我自己对Pillar的理解组织内容,希望能够把这个概 ...

  3. XCode教程之 如何在苹果开发者平台添加设备UDID

    XCode教程之 如何在苹果开发者平台添加设备UDID.在Xcode开发中,如何在苹果开发者平台添加新的手机设备UDID,进行测试,具体如下 工具/原料 Apple Developer 方法/步骤 1 ...

  4. sqlite3 读写锁

    转载:https://blog.csdn.net/u012218838/article/details/79362929(sqlite3 使用读写锁SRWLOCK例子) 转载:https://my.o ...

  5. linux中环境变量和系统加载环境变量的顺序

    一.系统环境变量: /etc/profile :这个文件预设了几个重要的变量,例如PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, uma ...

  6. Dotmemory 内存分析工具

    Dotmemory 内存分析工具 教程一.开始学习dotmemory 在本教程中,我们将学习如何运行dotMemory内存快照.此外,我们将简要地看看dotMemory的用户界面和基本分析的概念.考虑 ...

  7. junit单元测试不通过报documentationPluginsBootstrapper相关异常

    这是因为Spring整合springfox-swagger2后导致的,错误信息如下: -- ::, [main] [WARN] [org.springframework.context.support ...

  8. ActiveMQ学习教程

    一.activemq安装 官网地址:https://activemq.apache.org/ 具体安装过程不赘述,解压即安装, 二.使用 activemq有queue和topic两种模式, 我们以qu ...

  9. web自动化测试笔记(一)

    web自动化测试环境配置(JDK) 使用selenium工具做自动化测试之前,首先要做的准备工作是配置一下web自动化测试的环境. 1.下载jdk http://www.oracle.com/tech ...

  10. STL源码剖析——序列式容器#1 Vector

    在学完了Allocator.Iterator和Traits编程之后,我们终于可以进入STL的容器内部一探究竟了.STL的容器分为序列式容器和关联式容器,何为序列式容器呢?就是容器内的元素是可序的,但未 ...