我正在对使用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。我的问题是,这种行为是否正常?前面提到的配置是否应该这样做?还是与导致此行为的应用程序相关?谢谢
是的,这是Tomcat上的正常行为。
一旦移至https,它将不会将其他URL重定向回http,除非该URL明确地用于http。
您可以尝试将其添加到中的非安全网址格式块中web.xml,但这在https之后仍不会自动重定向到http。
web.xml
<user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint>
如果 确实需要 ,则必须编写一个 Filter检查URL是否不属于安全模式的一部分,然后重定向回http。
Filter