`

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集合

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

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

    Laravel开发-entity-attribute-value-model

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

    最新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-...

    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年的新加坡亚洲计算机与通讯...

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

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

    布署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_...

    Attribute在NET中的应用

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

    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合著的论文《基于属性与基于值的聚类评估...

    jQuery中[attribute^=value]选择器用法实例

    本文实例讲述了jQuery中[attribute^=value]选择器用法。分享给大家供大家参考。具体分析如下: 此选择器能够选取属性值是以某些值开始的元素。 语法结构: 代码如下:$(“[attribute^=value]”) 参数列表: 参数 ...

    Property和Attribute的区别

    "Property和Attribute的区别" 在面向对象编程(Object-Oriented Programming)中,Property和Attribute都是常用的概念,但是它们之间存在着本质的区别。Property是指类向外提供的数据区域,是智能的字段,其中有get...

    glsl自定义attribute

    `attribute`是GLSL中的一个关键概念,它在顶点着色器中用来传递顶点数据,比如位置、颜色、纹理坐标等。本篇文章将详细探讨如何在GLSL中自定义attribute,并结合给定的文件名`main02.cpp`、`minimal.frag`和`minimal...

Global site tag (gtag.js) - Google Analytics