Как ASP.NET MVC 3 узнает, что нужно поставить https на ссылки, даже когда F5 (big-ip) обрабатывает ssl? - PullRequest
1 голос
/ 21 февраля 2011

На нашем сайте у нас есть большой IP-адрес F5, который обрабатывает шифрование и дешифрование SSL и отправляет запрос на порт 80 на нашем сервере.

Поскольку это первый сайт, который мы делаем с ASP.NET MVCМне было любопытно, как он будет обрабатывать @ HTML.ActionLink's в представлениях.Удивительно, но это ставит https: //.В нашей среде CI (которая не поддерживает SSL), она помещает http: // на все ссылки.

У нас есть другие ссылки для добавления файлов javascript, файлов css и изображений, и мыиспользуя специальный заголовок HTTP, добавленный F5 к запросу, чтобы мы могли сказать.

Кто-нибудь знает, как ASP.NET MVC3 знает, должны ли ссылки иметь http: // или https://,, как я бы предпочелне иметь настраиваемого HTTP-заголовка, если есть способ, которым мы можем использовать тот же метод.

1 Ответ

0 голосов
/ 21 февраля 2011

ЕСЛИ вы используете RequireHttpsAttribute в вашем контроллере, это один из способов. Как это будет перенаправить на Https, если вызывается с Http.

Еще один важный способ, который, вероятно, соответствует вашему случаю, заключается в том, что он использует текущий путь запроса (Request.AbsoluteUrl) для создания ссылок, поэтому, если исходная страница вызывается с использованием HTTP, ссылки будут Https (из быстрого взгляда на код).

Итак, возможно, необработанный URL-адрес поступает в IIS на порт 80, но с указанием, что URL-адрес включает в себя Https. Попробуйте вывести что-то вроде Request.ServerVariables[ "HTTP_URL" ] для подтверждения. Я предполагаю, что Request.ServerVariables["HTTPS"] в вашем случае, как вы это описали.

...