Tomcat8.5及以上版本Cookie域名问题

本文介绍了在Tomcat 8.5及以上版本中遇到的Cookie域名配置异常问题,起因是由于Tomcat从LegacyCookieProcessor升级到Rfc6265CookieProcessor导致的Domain校验问题。解决方案包括修改context.xml配置,指定使用LegacyCookieProcessor,通过SpringBoot配置容器的cookie处理器,以及设置Cookie的一级域名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tomcat8.5及以上版本Cookie域名问题

起因

  1. Java版本为1.8,Tomcat版本为8.5
  2. 使用cookie进行sso单点登录
  3. 设置域名:domain = .xxx.com
  4. 运行提示错误:java.lang.IllegalArgumentException: An invalid domain [.xxx.com] was specified for this cookie

原因

  1. Tomcat在之前版本使用的默认的处理器CookieProcessor 是LegacyCookieProcessor ,而在之后版本的实现变为了Rfc6265CookieProcessor
  2. LegacyCookieProcessor 主要是实现了标准RFC6265, RFC2109 和 RFC2616,而Rfc6265CookieProcessor是实现了标准RFC6265
  3. Rfc6265CookieProcessor拼接Domain时增加了对domain 的校验,即必须以数字或者字母开头,必须以数字或者字母结尾

部分代码如下:

private void validateDomain(String domain) {
   
        int i = 0;
        int prev = true;
        int cur = -1;

        for(char[] chars = domain.toCharArray(); i < chars.length; ++i) {
   
            int prev = cur;
            cur = chars[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值