Где происхождение HttpContext.Current.Request.Url.Host? - PullRequest
2 голосов
/ 28 апреля 2010

Почему HttpContext.Current.Request.Url.Host возвращает URL, отличный от URL, используемого в веб-браузере? Например, при вводе «www.someurl.com» в браузере переменная HttpContext.Current.Request.Url.Host будет равна «www.someotherurl.com».

1 Ответ

4 голосов
/ 01 июня 2010

HttpContext.Current.Request.Url.Host - содержимое заголовка узла, которое получает приложение ASP.net. (см. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html для получения дополнительной информации о HTTP-заголовках, таких как Host).

Обычно заголовок, который видит ASP.NET, идентичен заголовку Host, отправляемому браузером. Однако возможно, что они не будут совпадать, если между браузером и вашим кодом ASP.net находится программное или аппаратное обеспечение, которое переписывает заголовок Host.

Например, крупные бюджетные хостеры, такие как GoDaddy, делают это, чтобы они могли поддерживать несколько доменов верхнего уровня на одном веб-сайте IIS, даже на более дешевых тарифных планах хостинга. Вместо создания отдельного веб-сайта IIS (что увеличивает нагрузку на сервер и, следовательно, стоимость), GoDaddy переназначает запросы на http://secondsite.com/ в виртуальный каталог на вашем «основном» размещенном сайте, например, http://firstsite.com/secondsite). Они изменят как заголовок Host:, так и URL.

Кстати, вы можете легко убедиться в том, что именно это и происходит, сбросив содержимое Заголовки HTTP-запросов , которое получает ваше приложение.

В любом случае, если вы хотите выяснить, кто меняет заголовок узла, начните с людей, которые размещают ваше веб-приложение (или с группы, которая отвечает за ваш балансировщик нагрузки и / или обратный прокси-сервер), поскольку они, скорее всего, ответственные за переписывание заголовка вашего хоста.

...