在将 cookie-config 设置为 httpOnly 并在 web.xml 中安全后无法读取 JSESSIONID



>我在我的 Web 应用程序 Web 中添加了以下配置.xml

  <session-config>
    <cookie-config>
      <path>/</path>
      <http-only>true</http-only>
      <secure>true</secure>
    </cookie-config>
 </session-config>  

当我启动我的应用程序时,我发送一个 http 请求来设置这个 cookie,我可以在带有路径/、Secure 和 httpOnly 的 http 响应中看到它。

但是,我看不到在以下 http 请求中发送此 cookie,因此,如果我对以下请求执行 request.getSession((.getId((,我会得到一个空字符串。

我尝试将以下内容添加到我的 tomcat 8.5 上下文以及 WAR 上下文中

<Context sessionCookiePath="/">

但它并没有解决问题。

这是否意味着 JSESSIONID cookie 不安全,因此被忽略以在请求中发送?

根据您的评论,您将会话cookie secure属性设置为true,使用http连接进行传输。

虽然正在使用的http协议不保证机密传输,但您可以通过激活 secure 属性来正确指示会话是敏感信息。因此,浏览器拒绝通过不安全的纯文本http传输将此信息发送回服务器。

阅读此问答以获取更多详细信息:Cookie"安全"标志如何工作?

由于 JSESSIONID 永远不会发送回服务器,因此每个请求最终都会创建一个永远不会用于后续请求的新会话。

解决方案是禁用 secure 属性,或者在 tomcat 中预先配置和使用https连接器。

还应将应用配置为仅接受https连接,并将http重定向到https

最新更新