Подтвердить что ты не робот

Почему Request.IsSecureConnection возвращает false, когда true

У меня есть страница aspx, которая проверяет Request.IsSecureConnection, чтобы убедиться, что это правда, если не перенаправляет на защищенную страницу https://www.domain.com/page.aspx.

Сервер имеет сертификат SSL, установленный для домена, и браузер показывает значок замка.

Тот же код работал нормально на другом сервере, но теперь Request.IsSecureConnection всегда возвращает false.

Я создал полностью пустой файл aspx, который просто печатает возвращаемое значение Request.IsSecureConnection, и он по-прежнему является ложным, поэтому нет другого контента, исходящего из стандартного HTTP-запроса.

Может ли кто-нибудь предположить, что может быть причиной этого, или дать какие-либо намеки на то, как я могу узнать, что заставляет это всегда возвращать false?

4b9b3361

Ответ 1

Если есть маршрутизатор балансировки нагрузки или аналогичный перед вашим веб-сервером с завершением ssl, то соединение оттуда на ваш веб-сервер не будет превышать SSL. В этом случае вам обычно необходимо проверить подключение к определенному порту или настроить заголовки с помощью балансировки нагрузки.

Ответ 2

Некоторые балансировки нагрузки добавляют новый заголовок к запросу, который вы можете использовать, чтобы определить, пришел ли исходный запрос от клиента через SSL. На сайтах Azure работает следующий код:

if (string.IsNullOrEmpty(Request.Headers["x-arr-ssl"]))
{
     // No SSL
}
else
{
     // Secure connection
}

Некоторые другие балансировки нагрузки могут использовать другой заголовок, например X-Forwarded-Proto.