我发现以下代码片段可以添加到我的 web.xml 中以强制请求重定向到 https:
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
这似乎应该可以完成工作,我的应用程序可以很好地将请求重定向到 https。
不过,网上推荐建议在server.xml中也这样做:
<Connector port="8080" enableLookups="false" redirectPort="8443" />
为什么我需要编辑 server.xml?我的应用程序可以在没有它的情况下运行,但是,我是否有一个未打开的安全漏洞?这会不会在未来造成不可预见的问题?
最佳答案
redirectPort
的默认值是8443
所以这就是为什么你添加它时没有观察到任何变化。如果您想改为重定向到端口 443
, 你必须设置 redirectPort
适本地,否则您的用户将被重定向到 host:8443
.
使用 CONFIDENTIAL
导致 Tomcat 重定向和切换协议(protocol),并且 redirectPort
指定将在 URL 中使用的端口号。您实际上必须同时指定( CONFIDENTIAL
在 web.xml
和 redirectPort
在 server.xml
),虽然 redirectPort
通常已经做了你想做的事(如你所见)。
关于Tomcat 7 重定向到 https 与 web.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32028892/