[英]Ajax Call To Web API
我正在使用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通话中缺少什么吗?
PS我没有访问Web API代码库的权限。
先谢谢您的帮助!
这些其他电话为何起作用?
因为其他调用不是通过客户端计算机上的浏览器正在访问的网页中运行的JavaScript进行的。 它们由已明确安装在客户端计算机上的软件制成。
此处存在“相同来源策略”,以阻止使用用户B的浏览器的网站A使用用户B的凭据从网站C请求数据。
CORS是网站C告诉浏览器它可以放宽“同源起点策略”的一种方法。
由于同源起源策略不适用于浏览器,因此在您的其他测试中甚至不会发送CORS规范要求的印前检查OPTIONS请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.