gpt4 book ai didi

ajax - Dojo 无法发出 CORS 请求。 jQuery 可以

转载 作者:行者123 更新时间:2023-12-01 10:50:05 25 4
gpt4 key购买 nike

我设置了一个 dojo 模块来处理我的通信:

define(["dojo/request/xhr", "dojo/json"],
function(xhr, JSON) {

return {
getJson: function(url) {
return xhr.get(url, {handleAs:'json', headers: {"X-Requested-With": ""}});
},
postJson: function(url, postData) {
return xhr(url, {
method: 'POST',
handleAs: "json",
data: JSON.stringify(postData),
headers: {"X-Requested-With": "", "Content-Type":"application/json"}
})
},
getSecure: function(url, token) {
return xhr.get(url, {handleAs:'json', headers: {"X-AUTH": token, "X-Requested-With": "", "Content-Type":"application/json" }});
},
postSecure: function(url, postData, token) {
return xhr(url, {
method: 'POST',
handleAs: 'json',
data: JSON.stringify(postData),
headers: {"X-Requested-With": "", "Content-Type":"application/json", "X-AUTH": token}
});
}
};

});

发送请求时,OPTIONS 几乎立即失败。我在 Postman 中尝试了请求,只是为了确保 API 正常运行。然后我一头雾水,在 jQuery 中构建了一个快速测试:

$.ajax({
url: 'https://someurl.url/auth/get_token',
type: 'post',
data: JSON.stringify({username:"user", password:"pass"}),
contentType: 'application/json',
dataType: 'json' ,
xhrFields: {
withCredentials: false
},
success: function(json) {
console.log(json);
$.ajax({
url: 'https://someurl.url/api/service/' + json.results.somevalue,
type: 'GET',
headers: { 'X-AUTH': json.results.token },
contentType: 'application/json; charset=utf-8',
dataType: 'json' ,
success: function(json) {
console.log(json);

},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("error :"+XMLHttpRequest.responseText);
}


});

},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("error :"+XMLHttpRequest.responseText);
}

这很好用。我知道 Dojo 大约一年前在发送“X-Requested-width” header 时遇到了问题,但我已经将其取消并且它没有尝试发送它。我正在拔头发,因为我真的不想将 jQuery 作为我的应用程序的依赖项仅用于发出 Web 请求。 Dojo 应该能够做到这一点。那里的任何 Dojo 人员都知道如何让它工作吗?

最佳答案

空字符串与 null 不同。您需要将 X-Requested-With 设置为 null,而不是 "",以避免预检请求。这应该无关紧要,除非您的服务器未响应允许 X-Requested-With header ,因为无论如何您都在发送自定义 header ,这将始终触发预检。

关于ajax - Dojo 无法发出 CORS 请求。 jQuery 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21373174/

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