AngularJS WebApi授权标头似乎未通过

AngularJS WebApi授权标头似乎未通过,angularjs,asp.net-web-api,Angularjs,Asp.net Web Api,我正在尝试使用AngularJS v1.3.15创建一个到ASP.NET WebAPI(最新版本来自Nuget)的调用,以获取客户列表。我可以成功地进行身份验证并取回令牌。我将令牌添加到身份验证头中,但当我进行调用时,它会被踢回,说缺少身份验证头 我拿到令牌后的角度呼叫如下所示 $scope.baseUrl = "http://localhost:7800/"; $http({ method: 'GET', url: $scope.baseUrl + 'customer',

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

我拿到令牌后的角度呼叫如下所示

$scope.baseUrl = "http://localhost:7800/";    
$http({
  method: 'GET',
  url: $scope.baseUrl + 'customer',
    headers: {
      'Authorization': $scope.token
    }})
我还尝试利用angularjs$资源

return $resource($scope.baseUrl + 'customer', { }, { 'get': { method: 'GET', isArray: true, headers: { 'Authorization': $scope.token } } });
在WebApiConfig注册方法中,我有以下设置

var cors = new EnableCorsAttribute("*","*","*");
config.EnableCors(cors);
在DelegatingHandler中,我检查授权标头,如下所示

var authHeader = request.Headers.Authorization;
从Angular应用程序中,它始终为空。如果我运行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

修复了我的问题,在一些搜索之后,我发现选项似乎不受开箱即用的支持。我发现如果我添加NuGet包Microsoft.Owin.Cors,然后添加

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

到startup.cs文件

当您在浏览器中按F12键并单击“网络”选项卡时,请求是否显示预期的标题?不,不在那里,已更新问题是chrome请求标题,您知道问题在客户端。现在搜索$http拦截器,您将发现数百个如何将身份验证头添加到请求的示例。看起来您还有一些CORS(跨源请求),因此您可能也会遇到问题。但是第一步是发送头。