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:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM