gpt4 book ai didi

javascript - Ajax 调用 Web API

转载 作者:行者123 更新时间:2023-11-28 00:40:55 25 4
gpt4 key购买 nike

我正在使用 jquery 对 asp.net Web API 方法进行 ajax 调用,该方法使用授权 token 来验证请求。这是 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();

如果从 Fiddler 调用它也可以工作。

如果 Web API 方法不支持 CORS,为什么这些其他调用可以工作?我在 jQuery 调用中遗漏了某些内容吗?

附注我无权访问 Web API 代码库。

预先感谢您的帮助!

最佳答案

why do these other calls work?

因为其他调用不是由客户端计算机上的浏览器访问的网页中运行的 JavaScript 进行的。它们是由已明确安装在客户端计算机上的软件制作的。

同源策略用于阻止网站 A 使用用户 B 的浏览器向网站 C 使用用户 B 的凭据请求数据。

CORS 是网站 C 告诉浏览器可以放宽同源策略的一种方式。

由于同源策略不适用于浏览器外部,因此 CORS 规范要求的预检 OPTIONS 请求甚至不会在您的其他测试中发送。

关于javascript - Ajax 调用 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com