node.js - 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()
}
})
但这没有帮助。任何想法如何解决这个问题?
解决方案
您想在服务器上强制执行此操作,最简单的方法是使用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。
推荐阅读
- python - 无法将调整大小的图像保存在 cv2 的特定文件夹中
- flutter - 如何使用 Flutter 在 Google MapView 上检测 animateCamera 是否完成?
- git - 当包含一些合并提交时如何恢复一系列提交?
- react-native - 使用 SMTP 协议从 React Native 发送电子邮件
- sql - 如何在 SQL 中返回特殊字符?
- enums - 枚举如何增强?
- java - 使用 Maven 将资源文件打包到 JAR 文件之外
- java - 如何确保用户没有在名为“名字”的第一个文本字段中输入他/她的全名
- javascript - 如何从 JavaScript 中的 API 响应创建唯一的对象数组?
- python - 使用 Pythonnet 调用 .NET 方法的 TypeError