1

我在 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>
4

1 回答 1

1

使用Tomcat配置,没有。

您有多种选择:

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

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

  3. 忍受它。

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

于 2013-03-22T12:08:15.263 回答