【问题标题】:Force redirect heroku/angular app to HTTPS version强制将 heroku/angular 应用程序重定向到 HTTPS 版本
【发布时间】:2018-08-21 11:22:01
【问题描述】:

我有一个 Angular 5 应用程序,它托管在 heroku 上。目前用户可以访问应用程序的 HTTP 版本。

即使用户访问 HTTP,我如何强制将用户重定向到 HTTPS 版本?

我尝试过的:

app.use(function (req, res, next) {
let sslUrl;

if (process.env.NODE_ENV === 'production' &&
    req.headers['x-forwarded-proto'] !== 'https') {

    sslUrl = ['https://myapp.herokuapp.com', req.url].join('');
    return res.redirect(sslUrl);
}

return next();
});

我已将上述代码放在我的 node.js 服务器中,但它没有工作。

用户因收到 403 错误而无法通过 HTTP 使用应用程序

【问题讨论】:

  • 快速谷歌搜索会返回 this answer
  • @trichetriche 我已经尝试了他们在该答案中提出的建议,但它不起作用。

标签: javascript node.js angular heroku


【解决方案1】:

我在https://github.com/rangle/force-ssl-heroku 使用了“force-ssl-heroku”包,就像魔术一样工作并且非常容易集成。

只需要在你的起始入口点脚本中:

var forceSsl = require('force-ssl-heroku');

并像这样使用它:

app.use(forceSsl);

部署并享受。

【讨论】:

  • 并确保您的 NODE_ENV 在 Heruko 中设置为“生产”。
  • 如果用户在浏览器中专门输入http://myapp.herokuapp.com,这是否也会重定向?
  • 当然。当您在浏览器中点击“myapp.herokuapp.com”时,它会被翻译成myapp.herokuapp.com(带有http),然后“force ssl”包确定“x-forwarded-proto”标头不是“https”,然后将请求重定向到 myapp.herokuapp.com(使用 https)。你可以在httpstatus.io查看你的状态码回复,只要输入你的http url,你就会看到状态码。
猜你喜欢
  • 2018-05-12
  • 1970-01-01
  • 2011-11-03
  • 2013-08-27
  • 2018-05-17
  • 2018-07-22
  • 2012-10-08
  • 2020-05-28
  • 2018-10-12
相关资源
最近更新 更多