我正在尝试使用http.get
从我的Angular2 / ionic2应用程序发送HTTP GET请求。 HTTP GET请求包含有效的Linkedin访问令牌,并且应该返回一些profiledata。但是,调用getProfileData()
时会发生以下错误:
3 229881 group EXCEPTION: Response with status: 0 for URL: null
4 229895 error EXCEPTION: Response with status: 0 for URL: null
5 229909 groupEnd
6 229950 error Uncaught Response with status: 0 for URL: null, http://192.168.178.49:8100/build/js/app.bundle.js, Line: 95774
还是:
let URL = "https://httpbin.org/get?name=hannes"
初始启用-load.ts:
import { Component } from '@angular/core';
import { NavController, Platform, Alert } from 'ionic-angular';
import { OnboardingHelloPage } from '../onboarding-hello/onboarding-hello';
import { CordovaOauth, LinkedIn } from 'ng2-cordova-oauth/core';
import { Http, Headers, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map'
@Component({
templateUrl: 'build/pages/onboarding-load/onboarding-load.html',
})
export class OnboardingLoadPage {
private data;
private code;
constructor(private navCtrl: NavController, private platform: Platform, private http: Http) {
this.http = http;
this.navCtrl = navCtrl;
}
public getProfileData() {
let URL = "https://api.linkedin.com/v1/people/~?oauth2_access_token=SOMEVALIDTOKEN&format=json";
//let URL = "https://httpbin.org/get?name=hannes"
this.http.get(URL)
.map(res => res.json())
.subscribe(data => {
this.data = data;
console.log(JSON.stringify(data));
});
// go to next page
this.viewOnboardingHello();
}
...
}
答案 0 :(得分:13)
这可能是一个CORS问题 您的Angular2 APP托管在您所呼叫的API以外的其他服务器上。
如果您想绕过此(仅用于测试目的),请安装this Chrome extension并添加
Access-Control-Allow-Origin:
到你的标题。
对于实际使用,您应该从服务器(Node,PHP,Python ...)(托管angular2 APP)调用API,并将数据传递给angular2 APP。
答案 1 :(得分:4)
作为旁注,当服务器刚刚离线时也会发生这种情况。
我最后来到这里是因为我想知道状态0和URL是否有正式含义。
答案 2 :(得分:3)
我们的日志中有一些。经过一番挖掘后,似乎只要在浏览器开始导航到新网址后中止ajax请求就会出现。
答案 3 :(得分:0)
运行Jesmine / Karma单元测试时,我遇到类似的问题。经过长时间的检查,我才知道这个问题是由于某些服务没有被正确地嘲笑。当加载测试用例的服务调用被浏览器中止时。因此,此错误即将到来。