Angularjs $.ajax起作用,$http不起作用(状态0;CORS?)

Angularjs $.ajax起作用,$http不起作用(状态0;CORS?),angularjs,http,Angularjs,Http,我有一个云服务,我正试图从中下载数据。我可以使用jQuery的$.ajax函数毫无问题地获取此数据-返回所有预期的状态代码 AngularJS是另一个故事,我不知道为什么。我正在使用$http服务获取(…)我的数据。我知道$http可能会出现一些错误(如果用户在注册框中键入错误,则为404;如果未通过身份验证,则为403) 然而,无论我尝试什么,我每次都会收到一个状态:0响应,正如您所想象的,这是非常无用的 我的基本职能如下: function get(config) { $ionicL

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

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

然而,无论我尝试什么,我每次都会收到一个
状态: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();
        }
    );
}
我用它来测试我的一个云服务的连接

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

GET https://incorrect.myservice.com/ net::ERR_NAME_NOT_RESOLVED
这是好的-这将导致404错误(?)

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

Object {data: "", status: 0, headers: function, config: Object, statusText: ""}
哪个是坏的-它不应该是0?应该是404。我做了一些研究,在AngularJS$http中,CORS似乎有点令人头痛

然而,据我所知,我的服务器上似乎启用了CORS,因为查看Fiddler/Chrome/IE等中的响应,所有响应都返回
访问控制允许标题:
访问控制允许标题:
,这是CORS所需的

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

请有人帮忙并提供一个指针

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

获取网络::错误\u名称\u未\u解析 这是好的-这将导致404错误(?)

没有。如果无法将主机名解析为IP地址,则无法与之建立TCP连接,因此甚至无法发送HTTP GET,如果无法发送请求,则无法获取响应,而404就是从中产生的。这是一个较低级别的网络错误,您甚至无法执行任何HTTP操作,因此无法获得HTTP状态代码


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

为什么会返回404?服务器响应404时返回404,因为服务器上不存在资源。在这里,您试图向不存在的服务器发送请求。所以你无法得到任何回复,因为请求甚至无法发送。谢谢Peter。知道怎么诊断吗?因为我真的在挠头。我以为状态0是“脱机”状态?没有什么可诊断的,这是一个错误,请相应地处理它。如果深入研究表示请求的底层XmlHttpRequest实例,您可能会获得更多的信息(可能会得到字符串“ERR_NAME_NOT_RESOLVED”),但我不知道细节,您可能会冒险进入依赖浏览器的领域。