首页 > 解决方案 > Heroku nodejs- 将 HTTP 重定向到 HTTPS

问题描述

我正在努力,Progressive Web App在使用 Lighthouse 进行测试时,我得到:

不将 HTTP 流量重定向到 HTTPS

我的服务器在 nodejs 中,它在 Heroku 上。我试图添加这段代码:

app.get('*',function(req,res,next){
  if(req.headers['x-forwarded-proto']!='https'){
    res.redirect(`https://${req.header('host')}${req.url}`)
  }else{
    next()
  }
})

但这没有帮助。任何想法如何解决这个问题?

标签: node.jsprogressive-web-apps

解决方案


您想在服务器上强制执行此操作,最简单的方法是使用express-sslify模块。从文件:

var express = require('express');
var http = require('http');
var enforce = require('express-sslify');

var app = express();

// Use enforce.HTTPS({ trustProtoHeader: true }) since you're behind Heroku's reverse proxy
app.use(enforce.HTTPS({ trustProtoHeader: true }));

// The rest of your express config.

另请注意,您希望app.use()像我一样使用,而不是app.get()像您那样使用,以确保您涵盖对应用程序的所有请求,而不仅仅是 GET。


推荐阅读