web-dev-qa-db-ja.com

Angular 2:EXCEPTION:ステータス付きの応答:URLに対して0:null

_http.get_を使用して、Angular2/ionic2アプリからHTTP GETリクエストを送信しようとしています。 HTTP GET要求には有効なLinkedinアクセストークンが含まれており、いくつかのプロファイルデータを返すことになっています。ただし、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
_

それでも:

  • Www.hurl.itでテストすると、同じURLのGETリクエストが機能します
  • アプリから呼び出されるGETリクエストは、異なるURLで機能します。 _let URL = "https://httpbin.org/get?name=hannes"_

onboarding-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();
}
...
}
_
17
Hannes Kannes

これはおそらくCORSの問題です。
Angular2 APPは、呼び出しているAPIとは別のサーバーでホストされています。

これをバイパスする場合(テスト目的のみ)、 this Chrome extension をインストールして追加します

アクセス制御許可元:

あなたのヘッダーに。
実際に使用するには、サーバーからAPIを呼び出して(Node、PHP、Python ...)(angular2 APPがホストされている場合)、angular2 APPにデータを渡す必要があります。 。

13
giaco

ログにそれらのいくつかがありました。少し掘り下げた後、ブラウザが新しいURLへの移動を開始した後、ajaxリクエストが中止されるたびに来るようです。

4

サイドノートとして、これはサーバーがオフラインのときにも発生します。

ステータス0とURL nullに正式な意味があるのではないかと思っていたので、ここで終わりました。

4
Arnaud P

Jesmine/Karma単体テストの実行時に同様の問題が発生します。長い時間を確認した結果、この問題は一部のサービスが適切にモックされていないことが原因であることがわかりました。テストケースがロードされたサービスコールがブラウザによって中止されたとき。したがって、このエラーが発生しています。

0
Ben P