Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将nodejs express静态请求重定向到https_Javascript_Node.js_Redirect_Express_Https - Fatal编程技术网

Javascript 将nodejs express静态请求重定向到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);

我需要将所有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);
        }
    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,
});