我不确定这是 Spring5.0.3的一个 bug,还是一个修复我这边问题的新特性。
升级之后,我得到了这个错误。有趣的是,这个错误只出现在我的本地机器上。在 HTTPS 协议的测试环境中,相同的代码可以很好地工作。
继续..。
之所以出现这个错误,是因为加载结果 JSP 页面的 URL 是 /location/thisPage.jsp
。计算代码 request.getRequestURI()
给出了结果 /WEB-INF/somelocation//location/thisPage.jsp
。如果我将 JSP 页面的 URL 修改为这个 location/thisPage.jsp
,那么一切都会很好。
所以我的问题是,我是否应该在代码中从 JSP
路径中删除 /
,因为这是今后所需要的。或者 Spring
引入了一个 bug,因为我的机器和测试环境之间的唯一区别是协议 HTTP
和协议 HTTPS
。
org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized.
at org.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:123)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:194)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)