gpt4 book ai didi

angularjs - $.ajax 有效,$http 无效(状态 0;CORS?)

转载 作者:可可西里 更新时间:2023-11-01 17:02:07 26 4
gpt4 key购买 nike

我有一个云服务,我正尝试从中下载数据。我可以使用 jQuery 的 $.ajax 函数毫无问题地获取此数据 - 返回所有预期的状态代码。

AngularJS 是另一回事,我不知道为什么。我正在使用 $http 服务来get(...) 我的数据。我知道 $http 可能会出现一些错误(如果用户在注册框中输入错误,则为 404,如果未通过身份验证,则为 403)。

然而,无论我尝试什么 - 我每次都会收到 status: 0 响应,正如您想象的那样,这是非常无用的。

我有一个基本的功能如下:

function get(config) {
$ionicLoading.show();

return $http(config)
.then(function (data) {
console.log(data);
return data.data;
},
function (data) {
console.log(data);
throw 'Connection error';
})
.finally(function () {
$ionicLoading.hide();
}
);
}

我用它来测试我的一项云服务的连接。

哪个好;但是 - 如果我为我的服务传递了一个不正确的子域,例如incorrect.myservice.com - 我收到以下错误:

GET https://incorrect.myservice.com/ net::ERR_NAME_NOT_RESOLVED

哪个好 - 应该会导致 404 错误(?)。

但是,错误回调中返回的数据是:

Object {data: "", status: 0, headers: function, config: Object, statusText: ""}

哪个不好 - 它不应该是 0?它应该是 404。我做了一些研究,似乎 CORS 在 AngularJS $http 中有点头疼。

但是,从我读到的内容来看,我的服务器似乎启用了 CORS,因为查看 Fiddler/Chrome/IE 等中的响应,所有响应都返回 Access-Control-Allow-Headers: *Access-Control-Allow-Headers: * 这是 CORS 所必需的。

response header

所以我完全不知道如何进一步调试它,因为我在我的应用程序中需要这个功能。但是 $http 似乎没有表现出应有的表现?

请有人帮忙指点。

所有错误代码都返回状态:0,我不知道为什么?

最佳答案

GET https://incorrect.myservice.com/ net::ERR_NAME_NOT_RESOLVED Which is good - that should result in a 404 error(?).

没有。如果不能将主机名解析为 IP 地址,就不能与它建立 TCP 连接,所以连 HTTP GET 都不能发送,如果不能发送请求,就不能得到响应,这就是 404 的来源。这是一个较低级别的网络错误,您甚至无法执行任何 HTTP,因此您不会获得 HTTP 状态代码。

这也不是 CORS 错误。如果 CORS 出现任何问题,浏览器(至少是 Chrome)将打印一条非常清晰明确的错误消息。

关于angularjs - $.ajax 有效,$http 无效(状态 0;CORS?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27407088/

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