Tomcat - 我可以强迫NON https吗?

时间:2013-03-22 07:05:37

标签: java tomcat servlets https

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

1 个答案:

答案 0 :(得分:1)

使用Tomcat配置,没有。

您有多种选择:

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

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

  3. 与之共存。

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