Zik*_*iko 3 java cookies tomcat session-cookies tomcat8.5
我在我的 webapp 应用程序 web.xml 中添加了以下配置
<session-config>
<cookie-config>
<path>/</path>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
Run Code Online (Sandbox Code Playgroud)
当我启动应用程序时,我发送一个 http 请求来设置此 cookie,并且我可以在带有路径 /、Secure 和 httpOnly 的 http 响应中看到它。
但是,我看不到此 cookie 在以下 http 请求中发送,因此,如果我对以下请求执行 request.getSession().getId() ,我会得到一个空字符串。
我尝试将以下内容添加到我的 tomcat 8.5 上下文以及 WAR 上下文中
<Context sessionCookiePath="/">
Run Code Online (Sandbox Code Playgroud)
但它并没有解决问题。
这是否意味着 JSESSIONID cookie 不安全,因此会被忽略在请求中发送?
根据您的评论,您将会话 cookiesecure属性设置为true,使用http连接进行传输。
虽然http所使用的协议不保证机密传输,但您可以通过激活该属性正确指示会话是敏感信息secure。因此,浏览器拒绝通过不安全的纯文本传输将此信息发送回服务器http。
阅读此问答了解更多详细信息:Cookie \xe2\x80\x9cSecure\xe2\x80\x9d 标志如何工作?
\n\n由于 JSESSIONID 永远不会发送回服务器,因此每个请求最终都会创建一个新会话,该会话永远不会用于后续请求。
\n\n解决方案是禁用该secure属性,或者最好在 tomcat 中配置并使用连接器https连接器。
您还应该将您的应用程序配置为仅接受 https连接并重定向http到https.
| 归档时间: |
|
| 查看次数: |
5180 次 |
| 最近记录: |