2016-12-28 186 views
3

当我使用ajax调用某个api端点时,如何才能在api控制器中获取请求源值?在c#api控制器中获取请求源

比如我从www.xyz.com在进行此调用:

$http({ 
    url: 'http://myazurewebsite.azurewebsites.net/api/ValueCall/CheckForExistingValuers', 
    method: "GET", 
    params: { loanID: $scope.loanIdPopup } 
}).success(function (data) { 

}).error(function (data) { 

}); 

一旦在API方面,我怎么能得到www.xyz.com价值?

CORS工作正常。

感谢,Laziale

+0

的可能重复http://stackoverflow.com/questions/4258217/getting-the-http-referrer-in-asp-net – Theo

+0

@Theo不是重复的。 – Laziale

+0

怎么没?您正在寻找引荐网址,不是? – Theo

回答

4

什么你正在寻找的可能是源头。如果您正在进行跨域请求,所有现代浏览器都会发送它。

ApiController你取它像这样:

if (Request.Headers.Contains("Origin")) 
{ 
    var values = Request.Headers.GetValues("Origin"); 
    // Do stuff with the values... probably .FirstOrDefault() 
} 
+1

我得到这个错误:'' ExceptionMessage“:”找不到给定的头文件“, ”ExceptionType“:”System.InvalidOperationException“,”我正在使用邮递员。 – Si8

+0

然后消费者可能不会发送该标题。但是如果它是跨域的话,所有现代浏览器都会发送它。 – smoksnes

+0

Ahhhhh ...我使用的网址是“http:// localhost”,只是在VS中调试并运行邮递员,也许这是为什么? – Si8

0

您可以通过当前的HTTP请求头采集的API方法抓住它:

IEnumerable<string> originValues; 
Request.Headers.TryGetValues("Origin", out originValues) 
0

你有你的控制器像里面的尝试:

public IHttpActionResult Post() 
    { 
     //get host from where the request came 
     string host = this.Request.Headers.Host; 

     return Ok(); 


    } 
相关问题