zoukankan      html  css  js  c++  java
  • cookie设置domain报异常:java.lang.IllegalArgumentException,解决tomcat因版本问题导致的domain设置异常

      今天在做项目的时候由于写了一个CookieUtil工具类,其中设置了一个常量字符串用于设置cookie的域名:COOKIE_DOMAIN,因为在项目中药实现单点登录的功能,所以使用cookie进行信息的保存,这样子以实现在多个子域名上存取用户的信息,但是在项目debug的时候一直抛了个异常:

           

        

       断点的位置是要将此时服务器的sessionID作为token写进cookie里面,并且将重新设置后的cookie返回。但是此步执行过后就会报错,但是步入writeLoginToken方法里面调试的时候每一步是正常的,也就是说并不能获取到这个session.getId()然后放入redis缓存中,我使用的Tomcat的版本是9.0.30版本的,也就是说此时tomcat并不支持domain设置子域名前面有".",如果是低版本的tomcat比如8.5以下的就没有问题,但是官网上现在8.0的已经废弃了:

           

       异常如下:

    java.lang.IllegalArgumentException: An invalid domain [.rmall.com] was specified for this cookie

      主要是cookieProcessor导致的问题:想继续使用自己配置的高版本的tomcat集群的话就需要在自己的tomcat的配置文件中做如下修改

      在conf配置文件中修改context.xml即可:

         

       

       在<Context>标签里面添加:

    <CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />

      然后重启tomcat跑项目,每个tomcat都需要做上面的修改,然后继续debug,单步到了下一句,运行成功:

           

      在redis中能获取到该key:

      

  • 相关阅读:
    Jquery-EasyUI学习2~
    IIS——发布网站
    一致性哈希算法
    利用ZTree链接数据库实现 [权限管理]
    Form表单提交的简要方式
    Redis学习之5种数据类型操作、实现原理及应用场景
    redis对比其余数据库
    ZooKeeper概述(转)
    Zookeeper-Zookeeper可以干什么
    Java内存分配及变量存储位置实例讲解
  • 原文地址:https://www.cnblogs.com/dashenaichicha/p/12160377.html
Copyright © 2011-2022 走看看