一尘不染

Tomcat:从HTTP重定向到HTTPS的问题

tomcat

我正在对使用Struts并部署在Tomcat上的现有Web应用程序进行一些修改。当用户访问一个特定页面时,我试图使我的应用程序从HTTP重定向到HTTPS。为此,我添加了我的web.xml:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>secured page</web-resource-name>
    <url-pattern>/secured.do</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

并到我的server.xml:

<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile=".keystore"
keystorePass="password" />

而且有效。问题是,一旦用户重定向到HTTPS,即使他访问另一个常规页面,他也不会返回到HTTP。我的问题是,这种行为是否正常?前面提到的配置是否应该这样做?还是与导致此行为的应用程序相关?谢谢


阅读 484

收藏
2020-06-16

共1个答案

一尘不染

是的,这是Tomcat上的正常行为。

一旦移至https,它将不会将其他URL重定向回http,除非该URL明确地用于http。

您可以尝试将其添加到中的非安全网址格式块中web.xml,但这在https之后仍不会自动重定向到http。

 <user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>

如果 确实需要 ,则必须编写一个
Filter检查URL是否不属于安全模式的一部分,然后重定向回http。

2020-06-16