我在 Heroku 上部署了一个快速服务器:https : //server.mydomain.com
还有一个 Next.js React 应用程序也部署在 Heroku 上:https ://app.mydomain.com
两者都有 Heroku 自动配置的 SSL 证书,当我访问 https 域时,它们按预期工作。
我遇到的问题是,当我访问http://app.mydomain.com 时,它不会重定向到https://app.mydomain.com。
我在网上找到的所有解决方案都指向在服务器上强制使用 SSL:
- 这个流行的问题说要检查
x-forwarded-proto
值:
/* At the top, with other redirect methods before other routes */
app.get('*',function(req,res,next){
if(req.headers['x-forwarded-proto']!='https')
res.redirect('https://app.mydomain.com'+req.url)
else
next() /* Continue to other routes if we're not redirecting */
})
- 和其他人建议使用像express-sslify或heroku-ssl-redirect 这样的包。
这些解决方案适用于服务器请求,但加载 React 客户端页面不一定会触发app.get()
。显然,React 客户端可以独立于服务器运行。
所以问题是:有人如何在 Heroku 上为子域 Next.js React 客户端应用程序强制使用 https?不使用快速服务器方法?