Tomcat8.5升级后302重定向时浏览器未回传Cookie求助
先检查代码里的Cookie设置
别先盯着Tomcat配置,大概率是代码问题。看看你设置认证Cookie的时候,是不是给路径值加了多余的引号?比如:// 错误写法:多了引号 authCookie.setPath("\"/\""); // 正确写法:直接写/ authCookie.setPath("/");Tomcat 7可能会自动忽略引号,但8.5的Cookie处理器更严谨,会把引号当成路径的一部分,浏览器自然识别不了根路径,只能把Cookie绑在请求的
/app/api/路径下。调整Tomcat的CookieProcessor配置
如果代码没问题,试试在conf/context.xml(全局配置)或者应用自身的META-INF/context.xml里添加如下配置:<Context> <CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" cookiePath="/" quotedCookieAttributes="false"/> </Context>quotedCookieAttributes="false"这个参数会强制Tomcat不给Cookie属性值加引号,解决路径被括起来的问题。之前你只切换了LegacyCookieProcessor,但没配置这个属性,所以没生效。验证响应头里的Set-Cookie字段
用浏览器开发者工具查看响应头的Set-Cookie字段:- 异常格式:
Set-Cookie: auth_token=xxx; Path="/" - 正常格式:
Set-Cookie: auth_token=xxx; Path=/
确认修改后路径没有引号,浏览器就能正确把Cookie绑定到根路径了。
- 异常格式:
排查反向代理的Cookie重写规则
如果应用前面有Nginx之类的反向代理,检查代理配置里有没有自动重写Cookie路径的规则——有时候代理会篡改Tomcat设置的路径,导致Cookie绑定的路径不符合预期。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

