AngularJS WebApi授权标头似乎未通过
我正在尝试使用AngularJS v1.3.15创建一个到ASP.NET WebAPI(最新版本来自Nuget)的调用,以获取客户列表。我可以成功地进行身份验证并取回令牌。我将令牌添加到身份验证头中,但当我进行调用时,它会被踢回,说缺少身份验证头 我拿到令牌后的角度呼叫如下所示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',
$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(跨源请求),因此您可能也会遇到问题。但是第一步是发送头。