2017-03-27 9 views
0

Ich versuche, einen Aufruf an eine API zu tun. Ich habe den Anruf mit POSTMAN getestet und es funktioniert gut, aber wenn ich versuche, Angular 2 HTTP zu verwenden, erhalte ich einen Fehler.Angular 2 Http Get mit Authentifizierung

Hier ist der Fehler: OPTIONEN [URL] 405 (Methode nicht erlaubt). Ich verwende meinen Testserver auf localhost, um eine Verbindung zur API auf einem anderen Server herzustellen. Der Dienst verfügt über Zugriffssteuerung-Erlauben-Ursprung.

Hier ist mein Code.

getAllAlerts(){ 
     let headers = new Headers({'authorization':'Bearer ACCESSTOKEN'}), 
      options = new RequestOptions({headers: headers}); 

     return this.http.get(this.mentionUrl,options).map((resp) => resp.json()); 
    } 

Wenn ich mich auf meinem Network (tab) auf Chrome Antrag Methode wird auf OPTIONS geändert und der Statuscode 405 Methode nicht erlaubt.

Antwort

0

In Ihrer API müssen Sie auch die zulässigen Methoden und Header angeben.

So zum Beispiel, wenn Rails und der Rack :: CORS gem verwenden, ist die Konfiguration so etwas wie:

# configure rails to allow CORS from all sources 
    config.middleware.insert_before 0, "Rack::Cors" do 
     allow do 
     origins '*' 
     resource '*', :headers => :any, :methods => [:get, :post, :options] 
     end 
    end 

Die obige Rails konfiguriert für Methoden CORS-Anfragen zu ermöglichen: GET, POST und OPTIONS. Die Option OPTIONS ist erforderlich, da CORS funktioniert. Wenn Sie eine Cross-Ursprungsanforderung ausführen, versucht der Browser zunächst eine OPTIONS-Anfrage und überprüft die Antwortheader für den Header Access-Control-Allow-Origin. Nur wenn der Browser den Header in der Antwort sieht, sendet er die eigentliche Anfrage