2016-09-16 15 views
3

リクエストを含むすべてのhttpリクエストを静的ファイルにリダイレクトする必要があります。リダイレクトnodejsは静的リクエストを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(...); 

次に静的ではありません。そのようなリクエストをリダイレクトする方法は?

答えて

3
var app = express(); 

app.all('*', function(req, res, next){ 
    console.log('req start: ',req.secure, req.hostname, req.url, app.get('port')); 
    if (req.secure) { 
     return next(); 
    } 

    res.redirect('https://'+req.hostname + ':' + app.get('secPort') + req.url); 
}); 
+0

ありがとうございました。魅力のように動作します。 –

0

Node.jsモジュールexpress-sslifyをご覧ください。 HTTPSを使用するようにすべてのHTTP要求をリダイレクトします。

あなたはそのようにそれを使用することができます:

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へhttps://github.com/florianheinemann/express-sslify

+0

私のサーバーに楽な方法でリダイレクトします。最初はhttp、秒はhttpsです。そして私はhttpsポートでURLに手動でリダイレクトする必要があります)) –

0
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)); 

リダイレクトは、静的な資産を提供する前に来ます。

0

このコードは、2つのポートの作業のいずれかのHTTP/HTTPS

res.writeHead(301, { 
    Location: "http" + (req.socket.encrypted ? "s" : "") + "://" + req.headers.host + loc, 
}); 
関連する問題