WEB api 2获取请求的客户端域

Ste*_*hRT 2 c# asp.net-web-api asp.net-web-api2

嘿所有我试图找到一些代码,让我知道对Web服务的POST请求来自哪个域.

举个例子:

如果Web服务在域上:

bob.com/webService/Postsomething
Run Code Online (Sandbox Code Playgroud)

客户端在域上加载页面:

bill.com/postpage.html
Run Code Online (Sandbox Code Playgroud)

在html页面上使用AJAX点击Web服务后,我希望能够从post函数中获取以下信息:

bill.com
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只能获取Web服务所在的IP和主机名,而不是他们要求Web服务提供信息的客户端域.

Dar*_*rov 5

您可以使用referrer HTTP标头:

public HttpResponseMessage Get()
{
   var domain =  Request.Headers.Referrer?.GetLeftPart(UriPartial.Authority);

    ...
}
Run Code Online (Sandbox Code Playgroud)

当然这个标头不能保证存在,你绝对不能依赖它,因为发出HTTP请求的客户端可能只是决定不发送它.在使用它之前,应始终检查它是否为null.