不为上下文根请求发送 Tomcat session cookie

标签 tomcat servlets

我有一个网络应用程序,我想要基于时间的 session ,以便刷新页面或在另一个选项卡上重新加载时保持相同。 所以,在 web.xml 中我有:

<servlet-mapping>
    <servlet-name>any</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>30</session-timeout> 
    <cookie-config>
        <name>sid</name>
        <max-age>1800</max-age>
    </cookie-config>
</session-config>

根据我的上下文名称,cookie 设置了适当的过期时间,其路径为/app/。 现在,如果我向/app/或/app/main 之类的 URL 发出请求,cookie 就会被传递。但是,/app 的根上下文路径不会发送 cookie。即使我添加...

<path>/app</path>

...在上面的cookie-config中,cookie在浏览器中的路径都是/app/。 这种奇怪的行为有什么解决方法吗?

Apache Tomcat/8.0.28

最佳答案

这种行为并不奇怪,这是出于安全原因。

该行为也是可配置的,但请确保您了解更改默认设置的安全隐患。

配置是通过 server.xmlContext 元素的 sessionCookiePathUsesTrailingSlash 属性进行的。有关完整详细信息,请参阅 Context documentation .

关于不为上下文根请求发送 Tomcat session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221831/

相关文章:

web-applications - 为什么 Tomcat 从 netbeans 运行时会忽略 META-INF/context.xml?

java - session ID 对另一台服务器有意义吗?

tomcat - 如何在 TomEE 中的同一事务中执行子请求?

java - Tomcat 与 eclipse 的解决方案

mysql - Apache 的 htdocs 文件夹发生了什么变化?

java - 使用 Javascript 验证数据后调用 servlet

java - Java 和 Servlet 映射的问题

java - 关于 Servlet 绑定(bind)模式和默认 servlet

java - 使用 JDBC 和 Tomcat 的持久 session

java - 如何将文件路径传递给远程 Web 服务