我正在尝试使用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
答案 0 :(得分:0)
解决了我的问题,经过一些搜索后,我发现OPTIONS似乎不支持开箱即用。我发现如果我添加NuGet包Microsoft.Owin.Cors然后添加
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
到startup.cs文件