如何在Tomcat上禁用从HTTP到HTTPS的自动重定向

时间:2016-03-16 10:21:13

标签: tomcat redirect https

有很多手册如何启用从HTTP自动重定向到HTTPS。但我需要禁用此类重定向(根据此建议SSL everywhere - all the time)。我使用Tomcat 7.x,我需要实现下一步:

  • 所有资源都受到保护(通过web.xml中的配置)[已完成]

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Application</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>
    
  • 当有人通过HTTP发出请求时 - 会返回错误(我估计是HTTP状态403)并且没有任何重定向

我尝试删除redirectPort中的server.xml

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"/>
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />

但它只导致重定向到443端口(但我希望禁用重定向)。

所以我的问题是:如何禁用从HTTP到HTTPS的自动重定向并返回错误?

3 个答案:

答案 0 :(得分:3)

看看documentation

redirectPort –如果此连接器支持非SSL请求,并且收到一个要求进行SSL传输匹配的请求,则Catalina将自动将请求重定向到此处指定的端口号。

redirectPort仅表示端口,但不允许/禁止重定向,如果未指定,则Catalina将重定向到默认的https端口(即443)。

因此,请检查您的web.xml文件(WEB-INF / web.xml和CATALINA_HOME / conf / web.xml),最后您可能会看到security-constraint<web-resource-name>HTTPSOnly</web-resource-name>或{{ 1}}。将<transport-guarantee>CONFIDENTIAL</transport-guarantee>编辑为HTTPSOnly,将HTTPSOrHTTP编辑为CONFIDENTIAL

答案 1 :(得分:1)

在conf / web.xml中注释掉块。这样做,redirectPort将被忽略。

答案 2 :(得分:-1)

在spring boot&#39;嵌入tomcat,将redirect port设置为0不会自动重定向,在我的情况下