我在这方面看到了相互矛盾的事情:在ASP.Net(和MVC)中,Request.Url.Host
是否返回了请求的主机头?我已经看到首先检查Request.Headers["host"]
的代码,然后在出现问题时降级为使用Request.Url.Host
,但我不明白为什么在相同的情况下需要这样做。
答案 0 :(得分:8)
他们并不完全相同。
HttpRequest.Headers["Host"]
使您可以直接访问客户端到服务器的HTTP标头。
HttpRequest.Url
由ASP.NET重建,默认情况下确实使用了传入请求的Host:
标头,但是如果设置了内部设置UseHostHeaderForRequestUrl
到false
然后ASP.NET将使用HttpRequest.Headers["SERVER_NAME"]
代替,但在某些情况下,它会使用"127.0.0.1"
的值。