Why does HttpContext.Current.Request.Url.Host return a different URL than the URL used in the Web browser? For example, when entering “www.someurl.com” in the browser, the HttpContext.Current.Request.Url.Host variable is equal to “www.someotherurl.com”.
Why does HttpContext.Current.Request.Url.Host return a different URL than the URL used in the Web
Share
HttpContext.Current.Request.Url.Hostis the contents of the Host header that the ASP.net application receives. (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html for more info about HTTP headers likeHost).Usually the header that ASP.NET sees is identical to the
Hostheader sent by the browser. However, it’s possible they won’t match if software or hardware is sitting in between the browser and your ASP.net code and is rewriting theHostheader.For example, large-scale budget hosters like GoDaddy do this so they can support multiple top-level domains on a single IIS website, even on their cheaper hosting plans. Instead of creating a separate IIS website (which adds to server load and hence cost), GoDaddy remaps requests for http://secondsite.com/ to a virtual directory on your “main” hosted site, e.g. http://firstsite.com/secondsite). They will change both the Host: header as well as the URL.
BTW, you can easily verify that this is what’s happening by dumping the contents of HTTP Request Headers that your app is receiving.
Anyway, if you want to figure out who is changing the Host header, start with the people who host your web app (or the team which is responsible for your load balancer and/or reverse proxy), since they’re likely the ones responsible for rewriting your Host header.