2017-12-17 3 views
0

Ich habe eine Https url und will Anfrage senden Daten von dieser URL zu erhalten, Szenario 1: von meinem Browser Wenn ich die URL getroffen bekomme ich die Antwort während meiner AngularJS App bekomme ich immer einen Fehler 401, aber wenn ich die Api von Browser getroffen habe ich immer die richtige AntwortAufruf Https URL auf Http get Anfrage AngularJS

für ich aus Sicherheitsgründen nicht URL hier verwenden könnte, aber was ich will ist:

$http({ 
     method: "GET", 
     url: "https://urlAdresss/", 
     headers: { 
      "Accept-Language": "en-US, en;q=0.8", 
      "Content-Type": "application/json;charset=UTF-8" 
     }, 
    }).then(function (_response) { 
     console.log(_response 
    } 

Ich bekomme immer nicht autorisierte Ich bin Netzwerk sowie auf Konsole wird jede Hilfe sehr geschätzt werden,

aber Wenn ich die gleiche URL von Browser getroffen erhalte ich die Antwort Es bedeutet das Backend funktioniert gut

Ich denke, Ich vermisse etwas in meiner Anfrage bekommen, deshalb ist der Fehler

+0

Mögliches CORS-Problem? Api und eckig laufen auf verschiedenen Hosts? – lzagkaretos

+0

@lzagkaretos api ist auf dem Server Ich versuche, die API von lokalen Host zu treffen, kann das Problem sein? –

+0

Es ist sehr wahrscheinlich. Weitere Informationen finden Sie in der Browser-Konsole und im Netzwerk-Tab. – lzagkaretos

Antwort

2

Es scheint ein Problem CORS (Cross-Origin Resource Sharing).

In der AngularJS-Seite sollten Sie die folgende Konfiguration verwenden, damit der Dienst $http automatisch Autorisierungsheader an HTTP-Anforderungen sendet.

var app = angular.module('app', []) 
    .config(function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     $httpProvider.defaults.withCredentials = true; 
    }); 

Und in Backend sollten Sie explizit erlaubt Herkunft angeben (zB. http://localhost:8888).
Beachten Sie auch einige Punkte von here.

Wenn Sie Anmeldeinformationen zulassen möchten, darf Ihr Access-Control-Allow-Origin nicht * verwenden.