fel*_*cst 12 ssl https heroku node.js express
我在我的页面上安装了一个SSL证书,它运行一个Node.js + Express应用程序,将Express服务器配置为始终强制重定向到HTTP,一切正常,但https重定向仅在重新加载页面时或者再次按下回车键.我录制了一个gif来展示会发生什么:
这是我的Express配置.
var express = require('express');
var path = require('path');
var serveStatic = require('serve-static');
var forceSsl = function (req, res, next) {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
return next();
};
app = express();
app.use(serveStatic(__dirname));
if(process.env.NODE_ENV === 'production') {
app.use(forceSsl);
}
app.all('/*', function(req, res) {
res.sendfile('index.html');
});
var port = process.env.PORT || 5000;
app.listen(port);
console.log('server started '+ port);
Run Code Online (Sandbox Code Playgroud)
我的应用程序在Heroku上运行.任何人都可以帮我找出发生了什么事吗?
提前致谢.
我认为您的服务器在发送重定向标头之前正在发送内容.
如果你交换:
app.use(serveStatic(__dirname));
app.use(forceSsl);
Run Code Online (Sandbox Code Playgroud)
对于:
app.use(forceSsl);
app.use(serveStatic(__dirname));
Run Code Online (Sandbox Code Playgroud)
它似乎工作得更好!
您的浏览器在重新加载/输入时执行重定向的原因对我来说是模糊的,因为我无法重现该行为.在FF上,我从未被重定向.
这可能是由于请求标头不同,例如HEAD,而不是GET或其他.我无法对此进行更多调查,使用Wireshark或Burpsuite确切地知道发生了什么,如果这仍然很重要......