web-dev-qa-db-fra.com

Angular 2: EXCEPTION: Réponse avec statut: 0 pour URL: null

J'essaie d'envoyer une demande HTTP GET depuis mon application Angular2/ionic2 en utilisant http.get. La requête HTTP GET contient un jeton d'accès Linkedin valide et est censée renvoyer des données de profil. Cependant, l'erreur suivante se produit lorsque getProfileData() est appelée:

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

Encore:

  • La requête GET avec la même URL fonctionne lorsqu'elle est testée sur www.hurl.it
  • La demande GET appelée depuis l'application fonctionne avec une URL différente, par exemple 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

C'est probablement un problème CORS.
Votre application Angular2 est hébergée sur un autre serveur que l'API que vous appelez.

Si vous souhaitez contourner cela (uniquement à des fins de test), installez this Chrome et ajoutez

Access-Control-Allow-Origin:

à vos en-têtes.
Pour une utilisation réelle, vous devez appeler l'API à partir de votre serveur (Node, PHP, Python ...) (où l'application angular2 est hébergée) et transmettre des données à votre application angular2 .

13
giaco

Nous en avions certains dans notre journal. Après avoir creusé un peu, il semble qu'ils viennent chaque fois qu'une demande ajax est abandonnée après que le navigateur a commencé à naviguer vers une nouvelle URL.

4
Esben Skov Pedersen

En remarque, cela se produit également lorsque le serveur est juste hors ligne.

Je me suis retrouvé ici parce que je me demandais s'il y avait une signification officielle au statut 0 et à l'URL nulle.

4
Arnaud P

J'ai un problème similaire lors de l'exécution du test unitaire Jesmine/Karma. Après avoir vérifié longtemps, j'ai appris que ce problème est dû au fait que certains services ne sont pas correctement moqués. Lorsque les appels de service chargés de cas de test ont été abandonnés par le navigateur. D'où cette erreur arrive.

0
Ben P