Angular 2: ИСКЛЮЧЕНИЕ: Ответ со статусом: 0 для URL: 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

Тем не менее:

  • Запрос GET с тем же URL-адресом работает при тестировании на www.hurl.it
  • Запрос GET, вызываемый из приложения, работает с другим URL-адресом, например. 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();
}
...
}

Ответы

Ответ 1

Это, вероятно, проблема CORS.
Ваш APP Angular2 размещен на другом сервере, чем API, который вы вызываете.

Если вы хотите обойти это (только для целей тестирования), установите это расширение Chrome и добавьте

Access-Control-Allow-Origin:

в заголовки.
Для реального использования вы должны вызывать API со своего сервера (Node, PHP, Python...) (где размещается APP Angular2) и передавать данные в APP Angular2.

Ответ 2

В качестве побочной заметки это также происходит, когда сервер находится в автономном режиме.

Я оказался здесь, потому что мне было интересно узнать, имелось ли официальное значение для статуса 0 и URL-адреса null.

Ответ 3

У нас были некоторые из них в нашем журнале. После небольшого копания кажется, что они приходят всякий раз, когда запрос ajax прерывается после того, как браузер начал переходить на новый URL.

Ответ 4

У меня возникла похожая проблема при запуске модульного теста Jesmine/Karma. Проверив долгое время, я узнал, что эта проблема из-за того, что некоторые сервисы не издевались должным образом. Когда тестовый пример загружен, сервисные вызовы были прерваны браузером. Отсюда и эта ошибка.