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

Rom*_*hin 6 https redirect tomcat

有很多手册如何启用从 HTTP 到 HTTPS 的自动重定向。但是我需要禁用这种重定向(根据这个建议SSL 无处不在 - 一直)。我使用 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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 当有人通过 HTTP 发出请求时 - 返回错误(我猜是 HTTP 状态 403)并且没有任何重定向

我试图删除redirectPortserver.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" />
Run Code Online (Sandbox Code Playgroud)

但它仅导致重定向到 443 端口(但我预计禁用重定向)。

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

小智 6

看一下文档

\n\n
\n

redirectPort \xe2\x80\x93 如果此连接器支持非 SSL 请求,并且收到匹配需要 SSL 传输的请求,Catalina 会自动将该请求重定向到此处指定的端口号。

\n
\n\n

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

\n\n

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

\n


小智 5

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


小智 -2

在 Spring Boot 的嵌入式 tomcat 上,将重定向端口设置为 0 不会自动重定向,就我而言