我在不同的场景中遇到了一些 JSESSIONID cookie的问题。我已经阅读了很多信息,但是如果事情没有按预期发挥作用,那就太疯狂了。
长话短说,我在代理服务器(nginx)后面有一个Web服务器。代理使用HTTPS处理请求(并将HTTP重定向到HTTPS),代理也具有LDAP授权(无论如何都是无关紧要的)。
在Web服务器上配置apache代理,从443(https)重定向到80端口。 Web服务器是Tomcat,它在server.xml中配置为使用安全cookie(连接器设置)。
总结
[browser] -----> [nginx proxy] -----> [tomcat app server]
现在出现问题:
当从内部网打开应用程序时(请求直接转到没有nginx代理的应用程序服务器),cookie根本不会被缓存。开发人员工具显示,响应包含 JSESSIONID cookie,但新请求不使用它并且应用程序中断。
关键时刻:服务器返回安全 Cookie
当从互联网上打开应用程序(请求通过nginx代理)时,会缓存Cookie。应用程序正常。但Cookie 不安全,但可能(因为tomcat已配置且我们通过HTTPS运行)。
所以,我想了解为什么在第一种情况下不缓存cookie以及为什么在第二种情况下cookie不安全。
更新
我删除了
<session-config>
<cookie-config>
<secure>true</secure>
</cookie-config>
</session-config>
来自web.xml(它的目的是让所有的cookie都安全,我发现它在web中的某个地方)
之后,问题1解决了(现在缓存了cookie),问题2也解决了(cookie是安全的)。 老实说,我不明白这种魔法,并希望听到一些专家的解释。
答案 0 :(得分:0)
您可以使用
删除Cookie的尾部斜杠sessionCookiePathUsesTrailingSlash="false"
用于上下文