我开始对此感到困惑。我正在开发一个C#.NET Web API服务和前端应用程序来使用它。我使用令牌来验证我的请求时遇到了很多困难,jQuery似乎遇到了麻烦。我可以很好地获得一个令牌,但jQuery不会在进一步的请求中将它添加到Authorization标头。
我的设置是一个index.html页面,里面有几个jQuery Mobile页面。它从“#login”页面开始,该页面使用用户名,密码和授权类型向我的/ Token URI发送请求。这是成功的,返回是令牌。页面更改为“#home”,并将测试ajax调用发送到/ api / values以获取值。问题是,jQuery不是添加一个名为'Authorization'的标题,而是添加一个'Access-Control-Request-Headers',其值为'accept,authorization'。起初我认为这是一个CORS问题,但是当我在Chrome中使用Advanced Rest Client发送请求时,请求正常。
来自'#Home'的AJAX电话
$.ajax({
url: 'http://slalomtest2.azurewebsites.net/api/values/',
type: 'GET',
async: true,
dataType:"json",
beforeSend: function(request){
request.withCredentials = true;
request.setRequestHeader("Authorization", "Basic " + Token);
},
success: function(result){
console.log(result);
},
error: function(request, error){
$.mobile.changePage("#login");
}
});
The bad request the AJAX sends
This is what it looks like from Advanced Rest Client in the same browser
先谢谢你的帮助,我一整天都在撞墙。