最近、ノード/エクスプレスサーバでHTTPSを設定する際にスタブを取った。次のコードを使用してhttpsを使用するすべてのルートをリダイレクトできました。すべてのルートのHTTPSリダイレクトnode.js/express - セキュリティの問題
// force https redirect
var https_redirect = function(req, res, next) {
if (req.secure) {
if(env === 'development') {
return res.redirect('https://localhost:3000' + req.url);
} else {
return res.redirect('https://' + req.headers.host + req.url);
}
} else {
return next();
}
};
app.get('*', function(req, res, next) {
https_redirect(req, res, next);
});
これはうまくいきます。
- これは、HTTPからHTTPSにリダイレクトするための理想的な方法です:私はhaventは以来、私は質問のカップルを持って前にしかし、」これに手を出して?
- ユーザーがhttpルートを使用している場合、リダイレクトする前に誰でもsslstripのようなものを使用してセッション情報を傍受できます。
node:v0.8.2;表現:
// force https redirect
var https_redirect = function() {
return function(req, res, next) {
if (req.secure) {
if(env === 'development') {
return res.redirect('https://localhost:3000' + req.url);
} else {
return res.redirect('https://' + req.headers.host + req.url);
}
} else {
return next();
}
};
};
app.use(https_redirect());
app.get('/', routeHandlerHome);
応答のためにPeterに感謝します。これは本当に助けになりました。 – los7world
これは素晴らしいですが、非標準(HTTPの場合は80、HTTPSの場合は443)を使用している場合は、 'https:// localhost:[PORT]'にリダイレクトしようとするため、少し問題になります。回避策は 'development'環境で' SSL_PORT'環境変数を設定し、それが定義されている場合はポートを置き換えます。修正されたスニペットについては、[here](https://gist.github.com/gingi/47df42a45bb1653002ee#file-gistfile1-js-L5-L8)を参照してください。 – Gingi
hei、これを行った後にフロントエンドクライアントに接続するにはどうすればよいですか?ありがとう! – alexsc