You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止Heroku将子域名的HTTP请求重定向至HTTPS?

解决Heroku自动HTTP转HTTPS重定向的问题

我来帮你搞定这个Heroku的HTTP重定向问题,顺便解释下为啥根域名的站点能正常运行~


阻止自动重定向的三种方法

Heroku的HTTP→HTTPS自动重定向通常是由平台默认路由规则、应用环境变量或者SSL配置导致的,你可以尝试以下方案:

1. 禁用FORCE_SSL环境变量

很多框架(比如Rails)或者Heroku的默认配置会开启FORCE_SSL来强制HTTPS。你可以通过Heroku CLI关闭这个设置:

heroku config:set FORCE_SSL=false --app 你的应用名称

替换命令里的你的应用名称为实际的Heroku应用名,执行后应用会自动重启,强制重定向就会被关闭。

2. 在应用代码中添加中间件拦截重定向

如果你的应用是自定义代码(比如Node.js/Express、Python/Flask),可以在代码里添加中间件来取消HTTPS重定向。举个Express的例子:

app.use((req, res, next) => {
  // 忽略Heroku的x-forwarded-proto头,不强制转HTTPS
  next();
});

这个方法需要你能修改应用代码,适合自定义开发的场景。

3. 检查并关闭Heroku的SSL自动管理

登录Heroku控制面板,进入你的应用→Settings→Domains and certificates,看看是否开启了Automated Certificate Management (ACM)。如果开启了,Heroku会自动尝试为你的域名配置SSL证书,当证书无法生效时就会触发错误重定向。关闭ACM后,平台就不会强制HTTPS了。


为什么根域名的站点能正常运行?

这和根域名的DNS配置方式有关:

  • 根域名(比如example.com)不能用CNAME记录(DNS规范限制),所以你应该是用了ALIAS/ANAME记录指向Heroku的负载均衡器。Heroku对根域名的路由逻辑和子域名不同,默认不会强制HTTPS重定向,或者你的根域名已经正确配置了SSL证书(比如通过ACM成功获取了证书),所以访问正常。
  • 而你的子域名用的是CNAME记录指向herokudns.com,Heroku对这类子域名的默认行为是优先尝试HTTPS,当没有有效SSL证书时,就会出现你遇到的SSL协议错误。

内容的提问来源于stack exchange,提问作者Robert Skarżycki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:46:25