2016-11-27 3 views
0

Ich habe einen Fehler mit CORS:CORS "Keine 'Access-Control-Allow-Origin'-Kopfzeile ist auf der angeforderten Ressource vorhanden."

„XMLHttpRequest kann http://graphql-swapi.parseapp.com/ nicht geladen Antwort auf Preflight-Anfrage nicht Zutrittskontrollprüfung bestehen. Nein" Access-Control-Allow-Origin-Header ist auf der angeforderte Ressource vorhanden . 'http://localhost:3000' ist daher kein Zugriff erlaubt. Die Antwort hatte den HTTP-Statuscode 405. "

Fehler beim Aufruf einer Service-Methode.

Code Snippet:

let headers = new Headers(); 
headers.append('Access-Control-Allow-Origin', '*'); 
headers.append('Content-Type', 'application/json'); 
headers.append('Accept', 'application/json'); 
headers.append('Access-Control-Allow-Methods', 'POST'); 
headers.append('Access-Control-Allow-Headers', 'Content-Type'); 

//console.log(headers); 

return this._http.post(apiUrl, { query: query, vars: '{}' }, { headers: headers }) 
    .map(res => res.json().data.planets); 

Wenn ich CORS im Browser zu deaktivieren, erhalte ich:

XMLHttpRequest nicht xxx laden. Antwort für Preflight hat ungültigen HTTP-Statuscode 405 Fehler.

Eine Abfrage und Code ist sicher richtig.

+0

Mögliches Duplikat von ["Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden"] (http://stackoverflow.com/questions/20035101/no-access-control-allow-origini- header-is-present-on-the-requested-resource) – georgeawg

Antwort

0

Die Antwort hatte HTTP-Statuscode 405

Look that up:

405 Methode nicht erlaubt


Antwort auf Preflight-Anfrage

Look that up:

„Preflight“ Anfragen zuerst durch die OPTIONS-Methode zu der Ressource auf der anderen Domäne, um eine HTTP-Anforderung senden, um zu bestimmen, ob die tatsächliche Anforderung sicher

senden

Ihr serverseitiger Code ist vermutlich so eingerichtet, dass die CORS-Header der Antwort auf eine POST-Anforderung hinzugefügt werden, Sie haben sie jedoch nicht für die Verarbeitung einer OPTIONS-Anforderung eingerichtet.

+0

Wie kann ich das lösen? Ich muss den Servercode oder etwas im App-Code ändern? –

+0

Sie müssen den Servercode ändern, damit er die Optionsanforderung verarbeiten kann. – Quentin

+0

Sie sollten auch den clientseitigen Code ändern, damit er nicht versucht, die ** CORS ** - Antwortheader so festzulegen, als wären sie ** Request ** -Header. Ihr Code kann sich nicht die Erlaubnis geben, auf andere Sites zuzugreifen, wodurch die Einschränkung sinnlos wäre. – Quentin

Verwandte Themen