CORS, verhindern preflight-request Authorization-header mit
AngularJS verwandelt mein POST
Anfrage OPTIONS
wenn ich Authorization
header:
$http({
url: ApiEndpoint + 'logout',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': UserService.getApiKey()
}
})
Ich bin developpling eine hybride mobile Applikation mit Ionischen, dass ich test in browser, os, es ist ein CORS Anfrage.
Habe ich schon gesehen diese Frage. Der vorgeschlagene workaround ist, ändern Sie Content-Type
dass ich dann auch getan und es funktionierte ohne Authorization
. Mit Authorization
header der Anfrage wird wieder geändert, um OPTIONEN Methode.
Können Sie vorschlagen client-Lösung, bitte, denn einen haben keine Kontrolle über server-API.
Danke.
Preflight ausgelöst wird, in deinem Fall als Einstellung 'Authorization' - header wird Ihre Anfrage nicht einfach in der MDN-Bedingungen. Die einzige erlaubte Header manuell gesetzt werden, zu klassifizieren, als einfach sind Accept, Accept-Language, Content-Language und Content-Type. Ref: developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS .Nicht sicher, ob Sie könnte zu vermeiden, pre-flight -, aber Sie konnte den cache für einen vorgegebenen Zeitrahmen für Anfragen.
InformationsquelleAutor VladRia | 2016-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
als Entwickler bemerkte, der CORS-request wird preflighted, es sei denn, es ist ein einfache Anfrage.
InformationsquelleAutor VladRia
Die folgende Antwort wahrscheinlich gilt auch für das, was Sie tun - obwohl Sie Ihren 'Content-Type' - header sollte in Ordnung sein, wenn die Daten korrekt formatiert:
Wie überspringen Sie die OPTIONEN preflight-Anfrage in AngularJS
Content-Type
dass ich dann auch getan und es funktionierte ohneAuthorization
. Wenn ichAuthorization
Antrag wird geändert, um die OPTIONEN-Methodeist die richtige. Der Authorization-header bewirkt, dass Ihr Antrag nicht eine "Einfache" Anfrage (es ist nicht ein 'safelisted' Kopfzeile - siehe hier: fetch.spec.whatwg.org/#cors-safelisted-request-header), und daher wird der browser tun, ein preflight-Anfrage.
InformationsquelleAutor juan8a
Als andere, haben gemerkt, was Sie sehen, sind CORS preflight-Anfragen.
Können Sie nicht vermeiden, wenn Sie festlegen möchten
Authorization
header, aber es gibt einige workarounds, wenn Sie Steuern das backend (oder sind bereit proxy verwenden). Mehr info: https://damon.ghost.io/killing-cors-preflight-requests-on-a-react-spa/Kurz:
InformationsquelleAutor johndodo