tomcat多线程传入HttpServletRequest导致cookie失效

本文详细描述了在Tomcat环境中,由于多线程传递HttpServletRequest导致cookie失效的问题。通过分析源码,发现了请求对象在子线程中被错误地重新初始化,从而影响了后续请求的cookie获取。解决方案是避免在子线程中使用HttpServletRequest对象,确保请求对象生命周期的正确管理。

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

最近线上出现了一个问题,客户端反应用户会异常退出。然后开始前后端一起排查问题,后端日志发现,该请求的cookie为null,导致获取用户信息,返回客户端请登录。
![](https://user-gold-cdn.xitu.io/2020/5/2/171d39a3acc8b776?w=1274&h=466&f=png&s=575735)
上面的是线上的日志。前面是servletRequest.getHeader("cookie");打印出来的内容illegal cookie里打印的是servletRequest.getCookies();的内容。很奇怪,header里面有。而request.getCookies()却拿不到东西。同事开始在本地复现,却难以复现。于是我开始和他一起解决这个问题。

本地debug走起
```
        <dependency>

            <groupId>org.apache.tomcat</groupId>

            <artifactId>tomcat-catalina</artifactId>

            <version>8.5.30</version>

            <scope>provided</scope>

        </dependency>
```
上面的maven配置可以让你能够调试tomcat源码,注意版本号和你的本地的tocmat版本一致。

![](https://user-gold-cdn.xitu.io/2020/5/2/171d3bec17700df9?w=1500&h=388&f=png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值