`

tomcat7中cookie写入中文引发Control character in cookie value or attribute异常(转)

 
阅读更多
本地测试通过的程序部署到测试环境遇到一个问题,如果登陆名称为中文时将引发如下所示的异常,而英文字母或者数字的登陆名称则是正常的,异常信息如下:

 

 

java.lang.IllegalArgumentException: Control character in cookie value or attribute.   
    at org.apache.tomcat.util.http.CookieSupport.isV0Separator(CookieSupport.java:155)   
    at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:323)   
    at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:157)   
    at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:98)   
    at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:913)   
    at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:683)   
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:400)   
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)   
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)   
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)   
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)   
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)   
    at java.lang.Thread.run(Thread.java:662)  

 

 

根据上述异常提示检查代码,在本地重复测试了N次,发现一切正常,异常始终无法在本地重现,后来才发现测试服务器环境与本地开发环境不一样,测试服务器Tomcat为7.0版本,而本地开发环境tomcat为6.0,环境不统一就会出现各种千奇百怪的异常,在此提醒大家开发环境、测试、正式环境软件版本一定要统一!!!

 

还上Tomcat7之后再次测试,异常终于重现,通过调试发现由于在登陆的时候需要使用Cookie来保存用户的登陆信息,而Tomcat7中cookie对中文的支持不够好,直接将中文字符的登陆名写入cookie时会引发异常,所以需要先转码,才不会出现上述的异常。

 

正常写入不算完事,因为此时后台解析cookie值的代码取到的值是乱码,使用cookie是无法登陆的;这就需要在后台验证cookie登陆时,得先将取得到的cookie值转成UTF-8格式之后在对比数据库确认登陆信息是否正确。

 

分享到:
评论

相关推荐

    js自定义map集合

    由于原本把需要的数据存放到cookie中,但是cookie不能的key不能自动转译中文,出现乱码,后台服务器报错:Control character in cookie value or attribute.所以改为自定义map集合

    httpUtil httpclient 登陆携带cookie访问下一个连接

    在这个场景中,我们关注的是如何使用`httpclient`进行模拟登录并携带cookie来访问后续的URL。这个过程通常涉及到处理session和身份验证,对于开发需要登录功能的Web应用或自动化测试脚本尤其有用。 首先,`...

    论文研究-Cooperative Attribute-Based Access Control.pdf

    在本文中,作者提出了一个支持协作的基于属性访问控制(Cooperative Attribute-Based Access Control, 简称Coop-ABAC)机制。该机制将用户划分为不同的群体,并且每个用户都与一组属性相关联。通过基于属性的访问...

    最新tomcat7+nginx/tengine+memcached共享session的jar包2016年12月

    最新tomcat7+nginx/tengine+memcached共享session的jar包2016年12月自己更新使用,更新的jar包解决了tomcat7下attribute报错的问题,理论Tomcat8以上版本可用,请自己测试。 asm-5.1.jar kryo-4.0.0.jar kryo-...

    Laravel开发-entity-attribute-value-model

    在Laravel框架中,实体-属性-值(Entity-Attribute-Value,EAV)模型是一种非传统的数据库设计模式,常用于处理具有高度可扩展性的数据结构。这种模式允许动态地添加、修改和删除属性,而无需对数据库进行结构调整。...

    Retrieve HttpOnly Session Cookie in WebBrowser

    In order to help mitigate the risk of cross-site scripting, a new feature has been introduced in Microsoft Internet Explorer 6 SP1. This feature is a new attribute for cookies which prevents them from...

    如何操作cookie,分页标签

    在Web开发中,Cookie是一种广泛使用的机制,用于存储客户端状态信息。它们是服务器发送到用户浏览器并由浏览器保存的小型文本文件。在这个话题中,我们将深入探讨如何操作Cookie,自定义标签,以及如何定义EL...

    基于属性的访问控制模型及其展望Attribute-Based Access Control Models and Beyond

    这在云计算环境中尤为重要,因为云服务提供商经常需要根据用户属性来控制对数据的访问。 Ravi Sandhu教授在数据安全领域具有极高的权威,他提出了一系列关键的访问控制模型。他在2015年的新加坡亚洲计算机与通讯...

    布署tomcat错误和提示“Tomcat JDK name”错误

    <attribute name="webrootdir" value="WebRoot"/> ``` 这里的关键是确保`context-root`属性值与新的项目名称一致。 **步骤3:解决“Tomcat JDK name”错误** 在解决了项目名称及部署路径的一致性问题之后,...

    .net中attribute实现方法调用拦截(就是aop)

    在.NET框架中,Attribute是一种元数据,用于向编译器、IDE、运行时环境等提供额外的信息。这些信息可以用来修饰类、接口、方法、属性等各种编程元素,从而实现特定的功能或扩展。AOP(面向切面编程)是一种编程范式...

    redis+session+tomcat7分布式缓存配置源码

    2. **配置Tomcat7**:在Tomcat的`conf/context.xml`文件中,添加一个`Manager`元素,用于指定session的存储策略。如下所示: ```xml <!-- ... --> host="localhost" port="6379" password="your_redis_...

    BLE通用属性(ATTRIBUTE)组成的最小单元

    3. 属性长度(Attribute Value Length):属性长度规定了属性值数据的大小。在BLE中,通信的数据包大小有限制,因此属性值长度是通信协议设计时需要考虑的一个因素。 4. 属性权限(Attribute Permissions):属性...

    Attribute在NET中的应用

    在.NET框架中,属性(Attribute)是一种元数据,可以附加到程序元素,如类、方法、属性等,为编译器、运行时环境或其他工具提供额外的信息。它们是编程中的一个重要概念,允许开发者向代码中添加非执行性的描述性...

    ControlCAN_controlCAN.dll_vci_opendevice_controlcan_周立功CANlabvie

    ControlCAN是一个专为CAN(Controller Area Network)通信设计的库,用于在Windows操作系统下进行CAN设备的控制和数据传输。`controlCAN.dll`是这个库的核心动态链接库文件,它包含了实现CAN通信所需的各种功能函数...

    tomcat-5.5.23

    ============================================ <br>Out of the box, Tomcat 5.5 requires the Java 2 Standard Edition Runtime Environment (JRE) version 5.0 or later. However, you can also run Tomcat...

    Pedestrian Attribute Recognition with Graph Convolutional Network in Surveillanc

    在文章《Pedestrian Attribute Recognition with Graph Convolutional Network in Surveillance Scenarios》中,作者提出了一个基于图卷积网络(GCN)的新型模型。该模型主要分为两个部分:首先使用卷积神经网络...

    Attribute在.net编程中的应用

    Attribute在.NET编程中的应用是一个关键的概念,它允许程序员在代码中添加元数据,这些元数据可以为运行时环境提供额外的信息,或者影响程序的行为。在.NET框架中,Attribute不仅仅是一个关键字,而是一个类,它是...

    attribute的作用和具体使用方法

    在Web开发中,属性(Attribute)作为一项基础而重要的功能,被广泛应用于处理用户请求、数据传递以及页面跳转等场景中。本文将深入探讨Attribute的基本概念、作用及其具体使用方法。 #### 一、Attribute的基本概念 ...

    Attribute-Based and Value-Based Clustering An Evaluation

    在当前的IT领域,尤其是自然语言处理(NLP)与机器学习交叉的研究中,一个关键的议题是如何从大规模语料库中自动获取概念知识。一篇由Abdulrahman ALMUHAREB与Massimo POESIO合著的论文《基于属性与基于值的聚类评估...

Global site tag (gtag.js) - Google Analytics