在C#api控制器中获取请求源

在C#api控制器中获取请求源,c#,asp.net-web-api,cors,httpwebrequest,httprequest,C#,Asp.net Web Api,Cors,Httpwebrequest,Httprequest,当我使用ajax调用调用某个api端点时,有没有办法在api控制器中获取请求原点值 例如,我在www.xyz.com上打电话: $http({ url: 'http://myazurewebsite.azurewebsites.net/api/ValueCall/CheckForExistingValuers', method: "GET", params: { loanID: $scope.loanIdPopup } }).success(function (data)

当我使用ajax调用调用某个api端点时,有没有办法在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工作正常。

您可以通过当前HTTP请求头集合从API方法获取它:

  IEnumerable<string> originValues;
  Request.Headers.TryGetValue("Origin", out originValues)
IEnumerable原始值;
Request.Headers.TryGetValue(“Origin”,out originValue)

您要查找的可能是源标题。如果您正在执行跨域请求,所有现代浏览器都会发送它

ApiController
中,您可以这样获取它:

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

@Theo的可能副本不是副本。怎么不是?您正在寻找推荐人URL,不是吗?如果您的CORS正常工作,您应该能够获取源标题。大多数现代浏览器都发送了它。我添加了如何从请求中获取原始值的示例,但我很好奇,如果您有EnableCors属性或web.config节或自定义配置原始值的cors策略,为什么需要它。我收到以下错误:
“ExceptionMessage”:“未找到给定的标头”。,“ExceptionType”:“System.InvalidOperationException”
我使用的是Postman。那么消费者可能不会发送该标题。但所有现代浏览器都会在跨域时发送该标题。啊……我使用的Url是”“只是在VS中调试和运行postman,也许这就是原因?可能就是这样。当使用ajax从一个域向另一个域发送请求时,浏览器会添加标题。没错,它可以从另一个解决方案中工作,但在Postman中不起作用。令人惊叹的。非常感谢。在您的最后一个答案之前,我已经+1您的答案;)在.NETCore中执行此操作的正确方法
var originValue = Request.Headers["Origin"].FirstOrDefault();

// or

StringValues originValues;
Request.Headers.TryGetValue("Origin", out originValues);