如果没有输入url,我想让Tomcat自动在我的应用程序上下文中添加一个尾随斜杠。
当我使用Jetty进行测试时,它会自动将尾部斜杠添加到我的应用程序上下文中,但Tomcat不会这样做。
我不确定部署后上下文将被命名为什么,因为我将战争交给了其他人,所以HTML中的任何资源引用都是相对的。有没有办法让Tomcat自动重定向到相同的上下文,并添加一个尾随斜杠?
目前正在使用Tomcat7和Spring3。
发布于 2017-08-15 22:46:13
Pat的出色回答帮助我挖掘了更多关于这方面的细节。这似乎与Tomcat的一些版本( 7.0.67+上的Tomcat7,以及8.29和8.37之间的Tomcat8)中的一些与会话cookie和URL重定向有关的怪癖有关。
底线似乎是,如果java服务器创建的特定于路径的会话cookie末尾带有斜杠(如"/app_name/"),那么服务器还必须执行自动初始重定向(/app_name --> /app_name/) ...否则,会话cookie将不会随请求一起发送,并且它永远不会在服务器上显示为您拥有一个有效的会话。这可能会导致从应用程序到身份验证的重定向循环。
Tomcat中有一些配置可以控制这两种行为,但据我所知,它们在这些版本中基本上是不同步的,因此可能会获得带有尾随斜杠的cookie,而不会获得重定向。Tomcat changelog中有几个相关的问题/更改:https://tomcat.apache.org/tomcat-8.0-doc/changelog.html
正如Pat已经注意到的,这是通过将以下属性添加到应用程序的上下文元素来解决的:
<Context mapperContextRootRedirectEnabled="true">https://stackoverflow.com/questions/11055608
复制相似问题