Я использую MVC5 на некоторых серверах IIS в Amazon EC2 за Amazon Elastic Load Balancer. Серверы IIS работают только по протоколу HTTP, а ELB преобразуется в HTTPS.
Сервер IIS не знает, обращается ли пользователь через HTTPS, поэтому у меня есть правило перезаписи, проверяющее заголовок «X-Forwarded-Proto», чтобы перенаправить пользователя на HTTPS.
К сожалению, когда требуется вход в систему, MVC/IIS перенаправляет пользователя на страницу входа в HTTP.
Если я проверю свой веб-сайт с помощью такого инструмента, как http://www.redirect-checker.org/ Я получаю такие результаты:
301 Перемещено навсегда (мое правило перезаписи URL)
302 Found (требуется вход в систему перенаправления -> почему на HTTP?)
http://example.com/Account/Logon?ReturnUrl=%2F
301 Перемещено навсегда (опять же мое правило перезаписи URL)
https://example.com/Account/Logon?ReturnUrl=%2F
200 OK
Я что-то упускаю?
Могу ли я настроить перенаправление входа в систему, чтобы сохранить протокол, исключив одно из этих перенаправлений?
Еще лучше, могу ли я каким-то образом предшествовать правилу перенаправления входа и заставить его принудительно использовать HTTPS, чтобы иметь только одно перенаправление?
Большое спасибо!
Приложение: я проверил, что такие команды, как "RedirectToAction", отправляют адрес вида "/Index2", а не весь "http://example.com/Index2". Это нормально, поэтому он сохраняет пользовательский протокол.