Ajax Call To Web API
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
}
});
此调用会导致OPTIONS
方法405 Method Not Allowed
。这似乎是 Web API 上的 CORS 支持的一个问题。
但是,如果从简单的 .NET 控制台应用调用,则 Web API 方法将按预期工作:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Headers[HttpRequestHeader.Authorization] = "Basic " + token + ":" + password;
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
如果从小提琴手调用,它也可以工作。
如果 Web API 方法不支持 CORS,为什么这些其他调用有效?我的jQuery调用中是否缺少某些内容?
附言我无权访问 Web API 代码库。
提前感谢您的帮助!
为什么这些其他调用有效?
因为其他调用不是从客户端计算机上的浏览器正在访问的网页中运行的 JavaScript 进行的。它们由客户端计算机上显式安装的软件制作。
同源策略用于阻止网站 A 使用用户 B 的浏览器使用用户 B 的凭据从网站 C 请求数据。
CORS是网站C告诉浏览器它可以放宽同源策略的一种方式。
由于同源策略在浏览器外部不适用,因此 CORS 规范要求的预检 OPTIONS 请求甚至不会在其他测试中发送。
相关文章:
- Steam Web API:I'我不知道该如何处理这个看起来像哈希的url来生成图像
- 在调用speak之前预加载Web Speech API
- 如何在visualstudio中调试web api时编辑javascript文件
- 将复杂对象从angular js传递到web api,它总是返回404
- 基于api密钥的NodeJS web服务
- 将文档上载到Web API
- AngularJS:使用维基百科API的web服务
- IndexedDB同步api+web工作者-what'这就是重点
- javascript函数包含两个元素和web音频api
- 如何更改web应用程序的语言.有没有这样的api
- 在Web应用程序中绑定API和模板路由的位置
- Canvas API和Web工作者
- 对/Token的ASP Web API调用间歇性
- 从其他域和计算机发布的 Web API 帖子
- Web API 调用在设备模式下失败
- Testing .NET Web API from JavaScript
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 获取 Spotify 用户 [Web API] 当前播放的曲目名称
- 如何在Javascript和PHP中设置带有URL身份验证的API web密钥
- 调用javascript api,但在仪表板上显示为Places api Web服务