如何从HttpContext (asp.net)获取"Host:"头部信息

13

我需要从不同的域名服务于我的应用程序的某些部分。

确切地说,我有一个子站点应该从特定区域的域名中提供服务。例如:

  • /fr/* 应该从 www.domain.fr 提供服务
  • /uk/* 应该从 www.domain.co.uk 提供服务 等等。

我想创建一个路由项,将请求错误的域名重定向到正确的域名。但是我不知道如何从HttpContext访问http头信息。

欢迎任何帮助。

4个回答

23
string requestedDomain = HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
string requestScheme = HttpContext.Current.Request.Url.Scheme;
string requestQueryString = HttpContext.Current.Request.ServerVariables["QUERY_STRING"];
string requestUrl = HttpContext.Current.Request.ServerVariables["URL"];

HttpContext.Request.ServerVariables["HTTP_HOST"] 是我正在寻找的。谢谢。 - Piotr Czapla

7

HttpContext.Current.Request.Url.Host


HttpContext.Request.ServerVariables["HTTP_HOST"]; -- 完成了任务 - Piotr Czapla
2
它不起作用,它总是返回相同的值。(即使我使用127.0.0.1或“任何其他域名或IP地址”访问站点,它也会返回localhost) - Piotr Czapla
1
只有当应用程序设置"aspnet:UseHostHeaderForRequestUrl"的值为"true"(默认值为"false")时,Request.Url.Host才会具有主机标头的值。 - Richard Szalay

5
我认为您想要获取 Request.Headers["host"]。

0
在某些情况下,您希望知道发送请求的主机,因此我使用了这个。
 stsring _Host = HttpContext.Request.Headers["Referer"];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接