私のエクスプレスアプリでは、特定のルートが常に安全な接続を使用するようにします。 httpsを使用していることを確認するにはどうすればよいですか?エクスプレスでhttps経由でリクエストが来ていることを確認するには
私は展開のためにherokuにpiggyback sslを使用しています。
私のエクスプレスアプリでは、特定のルートが常に安全な接続を使用するようにします。 httpsを使用していることを確認するにはどうすればよいですか?エクスプレスでhttps経由でリクエストが来ていることを確認するには
私は展開のためにherokuにpiggyback sslを使用しています。
私はHerokuにも展開します。彼らはnginxを使用してプロキシをリバースするとき、彼らのヘッダの束を追加します。この場合、興味のあるものはx-forwarded-protoです。
これは私がやったことです:
app.get(/\/register$/, function(req, res){
console.log(JSON.stringify(req.headers)); //to see all headers that heroku adds
if(req.headers['x-forwarded-proto'] && req.headers['x-forwarded-proto'] === "http") {
res.redirect("https://" + req.headers.host + req.url);
}
else {
//the rest of your logic to handle this route
}
});
セキュアサーバー(https)を実行するには、非セキュアサーバー(http)とは別に作成する必要があります。彼らはまた別のポートで聴くだろう。あなたがにリダイレクトたいパスにredirect_secure():
var express = require('express)
, app_insecure = express.createServer()
, app_secure = express.createServer({ key: 'mysecurekey' })
app_insecure.get('/secure-page',function(req, res){
// This is an insecure page, redirect to secure
res.redirect('https://www.mysecuresite.com/secure-page')
})
app_secure.get('/secure-page', function(req,res){
// Now we're on a secure page
})
app_insecure.listen(80)
app_secure.listen(443)
OR、これはルートミドルウェア
var redirect_secure = function(req, res, next){
res.redirect('https://mysite.com' + req.url)
}
app_insecure.get('/secure-page',redirect_secure,function(req, res){})
として実装することができ今、あなただけの関数参照を含める必要があります:このような何かを試してみてください安全な場所です。
Herokuの上のピギーバックSSLは、私は、安全でない接続の両方の負荷分散装置に設置し、おそらく安全な証明書をセキュリティで保護さを取ることができ、単一のサーバーを実行していることを意味する、と私は何とかするかどうかを検討する必要があります私は安全なトラフィックを受信しています。つまり、安全なサーバーを明示的に作成しなくても、私の安全でないサーバーがhttps sslで実行されている可能性があります。 – MonkeyBonkey
app.enable( '信頼プロキシ');
"VarnishやNginxなどのリバースプロキシの背後にあるExpressを使用するのは簡単ですが、設定が必要です.app.enable( 'trust proxy')経由で" trust proxy "設定を有効にすると、ExpressはそれがX-Forwarded *ヘッダーフィールドが信頼されている可能性があります。そうでなければ、簡単に偽装される可能性があります。
素晴らしい!これは多くの助けとなりました。 +1 :) –