2010-04-28 2 views
2

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

+0

хорошо, как это отличается от этого? Это похоже на то, что вы запрашиваете http://www.cnn.com, но Url.Host показывает «www.disney.com», или там какой-то разумный образец? –

+0

Они похожи. Более близким примером является то, что URL-адрес, введенный в браузере, - «www.mysite.net», но переменная Url.Host возвращает «www.mysitexy.net». Это только последние две буквы имени хоста, «xy», который добавляется. Я полагаю, что это может быть связано с тем, что mysitexy доступен только внутри брандмауэра и mysite, доступных внутри и снаружи брандмауэра. –

ответ

4

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.

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

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

Смежные вопросы