Spring:在上下文路径后需要尾部斜杠

时间:2016-01-14 18:50:49

标签: spring spring-boot

我在开发模式下有一个带有server.contextPath = / ts的Spring Boot 1.3应用程序。

在浏览器中,我可以http://localhost:8888/tshttp://localhost:8888/ts/

访问它

然而,从浏览器的角度来看,使用相对路径访问资源时非常不同。没有尾部斜杠,所有javascript AJAX调用都会删除" ts"从请求的路径。

在生产中,这不会发生,因为前端确保了尾部斜线。

我正在寻找一种解决方案,可以将浏览器重定向到#34; / ts"到" / ts /"这样相对路径是可预测的。我尝试了各种策略(setUseTrailingSlashMatch = false,重定向),但没有任何效果。有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这是很正常的,您甚至可以通过测试java.net.URL来测试Java。从本质上讲,您有这些组合:

http://foo.com/example/bar/ + baz -> http://foo.com/example/bar/baz http://foo.com/example/bar/ + ./baz -> http://foo.com/example/bar/baz http://foo.com/example/bar/ + ../baz -> http://foo.com/example/baz http://foo.com/example/bar/ + /baz -> http://foo.com/baz 但! http://foo.com/example/bar + baz -> http://foo.com/example/baz http://foo.com/example/bar + ./baz -> http://foo.com/example/baz http://foo.com/example/bar + ../baz -> http://foo.com/baz http://foo.com/example/bar + /baz -> http://foo.com/baz

我建议只需访问浏览器的历史记录并删除未删除的版本,就不会再获得自动填充功能。如果那不能做你想做的事情,添加一个servlet过滤器,当最后的斜杠丢失时,它会重定向到正确的页面。