Почему Request.IsSecureConnection возвращает false, когда ожидается значение true - PullRequest
20 голосов
/ 16 июня 2009

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

На сервере установлен сертификат SSL для домена, а в браузере отображается значок замка.

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

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

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

Ответы [ 2 ]

28 голосов
/ 16 июня 2009

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

1 голос
/ 14 апреля 2014

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

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

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

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