Request.Url.Host与Request.Headers [" host"]完全相同?

时间:2013-07-23 19:10:38

标签: asp.net .net asp.net-mvc web

我在这方面看到了相互矛盾的事情:在ASP.Net(和MVC)中,Request.Url.Host是否返回了请求的主机头?我已经看到首先检查Request.Headers["host"]的代码,然后在出现问题时降级为使用Request.Url.Host,但我不明白为什么在相同的情况下需要这样做。

1 个答案:

答案 0 :(得分:8)

他们并不完全相同。

HttpRequest.Headers["Host"]使您可以直接访问客户端到服务器的HTTP标头。

HttpRequest.Url由ASP.NET重建,默认情况下确实使用了传入请求的Host:标头,但是如果设置了内部设置UseHostHeaderForRequestUrlfalse然后ASP.NET将使用HttpRequest.Headers["SERVER_NAME"]代替,但在某些情况下,它会使用"127.0.0.1"的值。