一尘不染

Tomcat-我可以强制使用非https吗?

tomcat

我在tomcat中部署了一个Web应用程序。除了索引页面和其他一些页面外,该应用程序中几乎所有页面都需要HTTPS。当我访问任何需要HTTPS的页面时,浏览器将始终使用HTTPS。当我访问不需要HTTPS的页面时,浏览器有时会使用HTTP,有时会使用HTTPS,这主要取决于来源。我的问题是是否可以强制浏览器对不需要加密的页面使用HTTP(不带s)。

这是我的web.xml的一部分,该部分决定哪些资源需要加密。

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>

    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Open</web-resource-name>
        <url-pattern>/</url-pattern>
        <url-pattern>/contact</url-pattern>
        <url-pattern>/robots.txt</url-pattern>
        <url-pattern>/sitemap.xml</url-pattern>
    </web-resource-collection>

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

阅读 254

收藏
2020-06-16

共1个答案

一尘不染

使用Tomcat配置时,不需要。

您有多种选择:

  1. 编写一个过滤器以将那些页面重定向到HTTP。当请求到达过滤器时,您也可以为其服务。重定向到HTTP将导致用户的响应时间变慢。

  2. 您可以将不需要HTTPS的页面的链接替换为绝对HTTP链接。这可能需要很多工作,因此您需要谨慎行事,以确保在更改Web应用程序的上下文路径时,链接不会中断。如果您的服务器位于反向代理之后,它也可能变得混乱。

  3. 忍受它。

就个人而言,我会选择选项3。

2020-06-16