假设我有一个通过http://www.mypage.com/test.aspx访问的远程页面。在该页面上,我使用代码 Request.ServerVariables["HTTP_HOST"].ToString()。是否有可能当我访问该页面时,代码返回的 url 与我在 url 栏中看到的http://www.mypage.com/test.aspx不同?任何帮助,将不胜感激。谢谢。
5 回答
您可以看到 IIS 已绑定到您的 Web 实例的任何名称。因此,如果您的服务器名为“server1”且 IP 地址为 123.123.123.123,并且所有这三个都绑定到您的 IIS 实例,您可以看到其中的任何值。
要查找绑定的名称,请打开“Internet 信息服务 (IIS) 管理器”(开始,管理工具),展开树直到看到您的站点。找到你正在使用的那个。右键单击并选择“绑定”。编辑列表中的每个绑定。如果他们都说 [IP address:] “All Unassigned”,那么您的 HTTP_HOST 可能是 1. 您通过 DNS 配置的 WWW 地址,2. 机器名称 3. IP 地址。
尝试使用:
HttpContext.Current.Request.ServerVariables["SERVER_NAME"]
我希望这会奏效。
我也遇到了 HttpContext.Current.Request.ServerVariables["HTTP_HOST"] 的问题并弄清楚了。检索主机名的最佳方法是“HttpContext.Current.Request.Url.Host”。它解决了我的问题。
谢谢,拉吉
这是可能的,是的。isapi_rewrite模块可以在您自己的代码能够检查它之前修改 HTTP_HOST 的值。
有人已经提到本地重写器 (isapi_rewrite),但也有远程重写器,例如发布服务器的 ISA 服务器。发送原始主机标头(客户端输入的内容)或在发布设置中输入的内容是一种配置。