我在开发模式下有一个带有server.contextPath = / ts的Spring Boot 1.3应用程序。
在浏览器中,我可以http://localhost:8888/ts或http://localhost:8888/ts/
访问它然而,从浏览器的角度来看,使用相对路径访问资源时非常不同。没有尾部斜杠,所有javascript AJAX调用都会删除" ts"从请求的路径。
在生产中,这不会发生,因为前端确保了尾部斜线。
我正在寻找一种解决方案,可以将浏览器重定向到#34; / ts"到" / ts /"这样相对路径是可预测的。我尝试了各种策略(setUseTrailingSlashMatch = false,重定向),但没有任何效果。有什么建议吗?
感谢。
答案 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过滤器,当最后的斜杠丢失时,它会重定向到正确的页面。