Web API - 检测客户端域

时间:2016-05-12 20:45:08

标签: c# api asp.net-web-api cross-domain referrer

我正在使用C#和Web API构建一堆Web服务。可以从多个Web应用程序和多个本机应用程序访问这些服务。该应用程序管理授权域列表,以及授权应用程序ID列表(与本机应用程序一起使用)。

我正在寻找一种方法来检测托管Web应用程序的域名,以便我可以将该域名与我的授权域列表进行比较。到目前为止,我在请求上下文中找到的唯一属性是定义客户端/ Web应用程序调用的域的属性,这不是我想要的。

例如: 如果应用程序托管在externalapp.com上,并且正在api.myawesomeapi.com上向我的api发出请求,我想知道该客户端托管在externalapp.com上。但是在查看请求数据时,我发现的唯一信息是客户端正在请求资源" api.myawesomeapi.com"。

我希望来自本机应用程序(Android,iOS等)的请求不具有客户端域,并且来自Web应用程序的请求具有客户端域。 (客户端域,主机域,无论应该调用它)。

我查看了stackoverflow上的其他帖子,并找到了要使用的建议:Request.Headers.Referrer。就我而言,所有Web应用程序都为null,本机应用程序也为null。这似乎不适合我。

1 个答案:

答案 0 :(得分:1)

您可以使用:

var referrer = Request.Headers.Referrer;
if (referrer!=null)
{
    string client = referrer.GetLeftPart(UriPartial.Authority);
}