Можно ли проверить, используется ли HTTPS обработчиком express.js? - PullRequest
4 голосов
/ 24 августа 2011

Есть ли способ определить, использует ли запрос HTTPS в node.js с помощью express? Я использую Heroku с их сертификатами, которые, как я предполагаю, установлены на балансировщике нагрузки, а не на отдельных веб-серверах / экземплярах.

Ответы [ 3 ]

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

То же самое и здесь, nginx в моем случае обрабатывает ssl, поэтому я был вынужден получить информацию на стороне клиента.При загрузке первой страницы я извлекаю протокол и отправляю его асинхронному узлу.

console.log(location.href.split('://')[0]);

Мысль, что это не будет надежным решением, но на удивление хорошо работает на производстве.

Вы уже нашли решение на стороне сервера?

0 голосов
/ 14 мая 2012

Если вы можете настроить nginx, добавьте этот параметр в конфигурацию nginx

proxy_set_header X-Forwarded-Proto https;

А затем в своем коде проверьте его и установите флаг для других обработчиков.

mainapp.use(function(req, res) {

  if ( req.header('X-Forwaded-Proto') == 'https' ) {
     req.is_ssl = true;
  }
});
0 голосов
/ 01 сентября 2011

Express имеет различные конфигурации для серверов http и https. Вы слушаете оба в одном приложении? или просто слушаешь?

Вы можете проверить руководство Express о том, как настроить каждый тип сервера http://expressjs.com/guide.html

Вы можете установить что-то, где app = http и app2 = https, если вы хотите использовать оба файла из одного и того же файла.

app.get ('/ server', function (req, res) {console.log ('http request')}); app2.get ('/ server', function (req, res) {console.log ('https request')});

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