AngularJS WebApi授权标头似乎没有被传递

时间:2015-04-28 16:57:04

标签: angularjs asp.net-web-api

我正在尝试使用AngularJS v1.3.15创建一个调用ASP.NET WebAPI(来自Nuget的最新版本)以获取客户列表。我可以成功验证并获取令牌。我将令牌添加到身份验证标头但是当我进行调用时,它会被踢回来说缺少身份验证标头。

获得令牌后的Angular调用看起来像这样

$scope.baseUrl = "http://localhost:7800/";    
$http({
  method: 'GET',
  url: $scope.baseUrl + 'customer',
    headers: {
      'Authorization': $scope.token
    }})

我也尝试过使用angularjs $ resourse

return $resource($scope.baseUrl + 'customer', { }, { 'get': { method: 'GET', isArray: true, headers: { 'Authorization': $scope.token } } });

在WebApiConfig Register方法中,我有以下设置

var cors = new EnableCorsAttribute("*","*","*");
config.EnableCors(cors);
在DelegatingHandler中的

我检查了授权标题,如此

var authHeader = request.Headers.Authorization;

从Angular应用程序中,它始终为null。如果我从Fiddler和PostMan运行检查,我得到授权标题就好了。

当我从Chrome按F12并查看请求标题时,这些是结果

OPTIONS /customer HTTP/1.1
Host: localhost:7800
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost:63342
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2376.0 Safari/537.36
Access-Control-Request-Headers: accept, authorization
Accept: */*
Referer: http://localhost:63342/Test/index.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

1 个答案:

答案 0 :(得分:0)

解决了我的问题,经过一些搜索后,我发现OPTIONS似乎不支持开箱即用。我发现如果我添加NuGet包Microsoft.Owin.Cors然后添加

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 

到startup.cs文件