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