【发布时间】:2015-03-12 19:29:55
【问题描述】:
我正在使用 jquery 对 asp.net Web API 方法进行 ajax 调用,该方法使用授权令牌来验证请求。这是ajax调用:
$.ajax({
url: targetUrl,
type: 'GET',
beforeSend: function(xhr){
xhr.setRequestHeader("Authorization", "Basic " + btoa(token + ":" + password));
},
success: function (data) {
// do stuff
}
});
此调用将导致 405 Method Not Allowed 用于 OPTIONS 方法。这似乎是 Web API 上的 CORS 支持的问题。
但是,如果从简单的 .NET 控制台应用程序调用,Web API 方法会按预期工作:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Headers[HttpRequestHeader.Authorization] = "Basic " + token + ":" + password;
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
如果从 Fiddler 调用,它也可以工作。
如果 Web API 方法不支持 CORS,为什么这些其他调用有效?我在我的 jQuery 调用中遗漏了什么吗?
附:我无权访问 Web API 代码库。
提前感谢您的帮助!
【问题讨论】:
标签: javascript jquery asp.net ajax asp.net-web-api