Как я могу проверить, что запрос приходит через https в экспресс - PullRequest
6 голосов
/ 16 ноября 2011

Я хочу, чтобы определенные маршруты всегда использовали безопасное соединение в моем экспресс-приложении.Как я могу убедиться, что он использует https?

Я использую piggyback ssl на heroku для своих развертываний.

Ответы [ 3 ]

12 голосов
/ 01 марта 2012

Я также использую 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
  }
});
1 голос
/ 05 мая 2014

app.enable ('trust proxy');

"Использование Express за обратным прокси-сервером, таким как Varnish или Nginx, тривиально, однако требует настройки. Включение параметра" доверенного прокси "через приложение.enable («доверенный прокси-сервер»), Express будет знать, что он находится за прокси-сервером и что полям заголовка X-Forwarded- * можно доверять, что в противном случае может быть легко подделано. "

Экспресс за прокси доко

0 голосов
/ 19 ноября 2011

Чтобы запустить защищенный сервер (https), он должен быть создан независимо от незащищенного сервера (http). Они также будут слушать на отдельных портах. Попробуйте что-то вроде этого:

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)

ИЛИ это может быть реализовано как промежуточное ПО маршрута

var redirect_secure = function(req, res, next){
  res.redirect('https://mysite.com' + req.url)
}

app_insecure.get('/secure-page',redirect_secure,function(req, res){})

Теперь вам нужно будет только включить ссылку на функцию: redirect_secure () на пути, которые вы хотите перенаправить в безопасное место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...