返回

Apache Tomcat 9 中如何将 HTTPS 请求重定向到 HTTP?

windows

Apache Tomcat 9 中 HTTPS 重定向到 HTTP 的权威指南

问题:为什么我的 HTTP 请求会被重定向到 HTTPS?

在某些情况下,当你尝试使用 HTTP 访问网站时,它会被自动重定向到 HTTPS。这是因为你的浏览器可能将该网站的 HTTPS 版本保存在其 HSTS 记录中。

HSTS (HTTP 严格传输安全) 是一种安全机制,可强制浏览器仅通过 HTTPS 连接访问网站。虽然它通常是件好事,但在网站尚未完全支持 HTTPS 时,它可能会导致访问问题。

解决方案:将 HTTPS 重定向到 HTTP

要解决此问题,你需要配置 Apache Tomcat 9 以将 HTTPS 请求重定向到 HTTP。以下是详细步骤:

1. 编辑 server.xml 文件:

打开 Tomcat 的 server.xml 配置文件(位于 $CATALINA_HOME/conf/)。

2. 查找 HTTP 连接器:

找到 HTTP 连接器部分:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" />

3. 添加重定向端口:

在 HTTP 连接器中,添加 redirectPort 属性:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8080" />

4. 保存更改:

保存 server.xml 文件中的更改。

5. 重新启动 Tomcat:

重新启动 Tomcat 以应用更改。

验证重定向

重新启动 Tomcat 后,使用 HTTP 访问你的网站。现在应该会将 HTTPS 请求正确重定向到 HTTP。

注意事项:

  • 确保你的网站尚未强制使用 HTTPS。
  • 检查 server.xml 配置文件是否存在错误。
  • 如果问题仍然存在,请清除浏览器的 HSTS 记录。

常见问题解答

1. 我已经配置了重定向,但仍然无法正常工作。为什么?

  • 检查 server.xml 配置文件是否存在错误。
  • 确保你的网站没有配置为强制使用 HTTPS。
  • 清除浏览器的 HSTS 记录。

2. 我可以看到重定向,但我网站上的 HTTPS 版本无法访问。为什么?

  • 检查你的网站是否正确配置为处理 HTTPS 请求。
  • 确保你拥有有效的 SSL 证书。

3. 我如何禁用 HSTS?

  • 清除浏览器的 HSTS 记录。
  • 在网站标头中包含 Strict-Transport-Security: max-age=0

4. HSTS 对我的网站有何影响?

  • 它会强制浏览器仅通过 HTTPS 连接访问你的网站。
  • 它可以提高网站的安全性和用户隐私。

5. 我如何强制使用 HTTPS 连接?

  • 在 server.xml 文件的 HTTP 连接器中设置 secure 属性为 true
<Connector port="8443" protocol="HTTP/1.1" connectionTimeout="20000" secure="true" />