Javascript 将nodejs express静态请求重定向到https
我需要将所有http请求重定向到https,包括对静态文件的请求 我的代码:Javascript 将nodejs express静态请求重定向到https,javascript,node.js,redirect,express,https,Javascript,Node.js,Redirect,Express,Https,我需要将所有http请求重定向到https,包括对静态文件的请求 我的代码: app.use(express.static(__dirname + '/public')); app.get('*', function(req, res) { if (!req.secure){ return res.redirect('https://' + config.domain + ":" + config.httpsPort + req.originalUrl);
app.use(express.static(__dirname + '/public'));
app.get('*', function(req, res) {
if (!req.secure){
return res.redirect('https://' + config.domain + ":" + config.httpsPort + req.originalUrl);
}
res.sendFile(__dirname + '/public/index.html');
});
和重定向不处理静态文件。如果我更改订单:
app.get(...);
app.use(...);
然后我的静电计坏了。如何在此类请求上重定向?请查看Node.js模块
expresssslify
。它正是这样做的——重定向所有HTTP请求以使用HTTPS
您可以这样使用它:
var express = require('express');
var enforce = require('express-sslify');
var app = express();
// put it as one of the first middlewares, before routes
app.use(enforce.HTTPS());
// handling your static files just like always
app.use(express.static(__dirname + '/public'));
// handling requests to root just like always
app.get('/', function(req, res) {
res.send('hello world');
});
app.listen(3000);
文件:
重定向到https是在服务静态资产之前进行的。此代码以轻松的方式重定向到http/https
res.writeHead(301, {
Location: "http" + (req.socket.encrypted ? "s" : "") + "://" + req.headers.host + loc,
});
我的服务器在两个端口上工作。第一个用于http,第二个用于https。我需要手动重定向到带有https端口的url),非常感谢。工作起来很有魅力。
function forceHTTPS(req, res, next) {
if (!req.secure) {
var hostname = req.hostname;
var destination = ['https://', hostname,':', app.get('httpsPort'), req.url].join('');
return res.redirect(destination);
}
next();
}
//For redirecting to https
app.use(forceHTTPS);
// For serving static assets
app.use(express.static(__dirname + directoryToServe));
res.writeHead(301, {
Location: "http" + (req.socket.encrypted ? "s" : "") + "://" + req.headers.host + loc,
});