2016-05-11 6 views
4

Ich versuche, eine einfache GET-Anfrage über angular2 http wie dies zu tun:Angular2 HTTP GET-Anforderung mit Kopf nicht

let idToken = localStorage.getItem('id_token'); 
let authHeader = new Headers(); 
if (idToken) { 
    authHeader.append('Authorization', 'Bearer ' + idToken); 
} 
return this._http.get('http://someapicall-to-my-custom-api', {headers: authHeader}) 
.map(response => response.json()) 
.subscribe(
    data => console.log(data), 
    error => console.log(JSON.stringify(error)), 
    () => console.log('Completed') 
); 

(das Token auch aus einem Beitrag zu meinem api abgerufen vorhanden ist) Wenn ich meine nennen api ohne die Header gibt es ein gutes Ergebnis zurück. In dem Moment, in dem ich den Header hinzufüge, durchläuft ich nur den Fehler in subscribe. Das Problem ist, dass ich anfangen muss, die Überschrift damit zu senden, um einige geschützte Daten zu erhalten, und bis jetzt, das scheitert.

in der Konsole sehe ich keine nützlichen Informationen an alles ich sehe gerade:

{"_body":{"isTrusted":true},"status":200,"ok":true,"statusText":"Ok","headers":{},"type":3,"url":null} 

Auf der GET-Anfrage an dem api ich sehe keine 200 ok, aber ich tun, wenn ich die Header hinzufügen abgepfiffen. Außerdem gibt es keine Antwortheader.

Wenn ich versuche, Postman zu verwenden, um dasselbe zu tun, funktioniert es ohne Probleme in diesem Programm.

Ich hoffe, jemand kann mich in die richtige Richtung zeigen. Könnte es meine API sein? Wie kann ich das debuggen?

+0

Sehen Sie auf dem Server, wenn eine Anfrage eingeht? –

+0

Danke für Ihren Vorschlag, aber ich bin mir nicht sicher, wie ich das überprüfen soll. Was mir so komisch ist, ist, dass ich, wenn ich nur keine Header sende, ein OK 200 Ergebnis in der Konsole bekomme. Es ist nur, wenn ich versuche, einen Header hinzuzufügen es schlägt fehl und ich bekomme das Ergebnis in dem Beitrag beschrieben. Die API, die versucht, die HTTP-Get zu tun, ist eine benutzerdefinierte Laravel-API mit Dingo, zu der ich auch eine Kopfzeile hinzugefügt, um z. B. Cross-Domain zu ermöglichen. – Ahzrael

+1

Es könnte ein CORS-Problem sein, bei dem benutzerdefinierte Header explizit zugelassen werden müssen, aber ich würde eine korrekte Fehlermeldung erwarten. Steuern Sie den Server nicht? Was für ein Server ist das? –

Antwort

1

Durch das Hinzufügen dieser zu dem routes.php in meiner Laravel API Siehe, die die api war ich versuchte, es zu nennen begann zu arbeiten. Vielen Dank für Günter Zöchbauer mir die Idee zu geben, um hinzuzufügen, dass auch dort

header('Access-Control-Allow-Headers: Content-Type, X-Auth-Token, Origin, Authorization'); 
0

In diesem geschieht im Rahmen der Elektronen Apps und Chrome-Erweiterungen :).

Die Ursache ist, dass es Proxy zwischen Ihrer App und Ihrem Server gibt. (in der Regel ein Authentifizierungs-Proxy-Server für Intranet-Domänen). Diese neue URL stimmt nicht mit der Seiten-URL überein, von der die App geladen wurde, oder mit anderen vertrauenswürdigen URLs.

Leider kennen Sie die Domäne auf Ihrem Proxy-Server nicht, um sie Ihren vertrauenswürdigen URLs hinzuzufügen. Also gibt es keine Möglichkeit, das zu beheben.