Warum schlägt diese CORS-Anfrage nur in Firefox fehl?
Ich implementiere CORS mit Anmeldeinformationen und einer Preflight-Anfrage und bin ein bisschen verblüfft, warum die Preflight-Anfrage in Firefox 30 durchgehend fehlschlägt, aber in Safari (7.0.2) und Chrome 35 funktioniert. Ich denke, dieses Problem unterscheidet sich von "Warum funktioniert die Preflight-OPTIONEN-Anforderung einer authentifizierten CORS-Anforderung in Chrome, nicht jedoch in Firefox?"weil ich keine 401 erhalte, sondern eine CORS-spezifische Nachricht vom Browser-Client:
"Ursprungsübergreifende Anforderung blockiert: Die Richtlinie" Same Origin "verhindert das Lesen der Remote - Ressource unterhttp://myurl.dev.com. Dies kann behoben werden, indem die Ressource in dieselbe Domäne verschoben oder CORS aktiviert wird. "
Folgendes mache ich, ohne den Quellcode anzuzeigen:
Auf dem Server:
Überschriften für die Antwort OPTIONEN:
Access-Control-Allow-Origin: [[Ursprung von der Anfrage hier kopieren]]Zugriffskontroll-Zulassungsmethoden: "POST GET OPTIONS"Access-Control-Allow-Header: "X-Requested-With"Zugriffssteuerung-Berechtigungsnachweise erlauben: "true"Überschriften für die POST-Antwort:
Access-Control-Allow-Origin: [[Ursprung von der Anfrage hier kopieren]]Zugriffssteuerung-Berechtigungsnachweise erlauben: "true"Im Browser-Client:
jQuery.ajax({
url: requestUrl,
type: 'POST',
data: getData(),
xhrFields: {
withCredentials: true
}
});
Gemäß der Spezifikation wird dadurch eine OPTIONS-Preflight-Anforderung ausgelöst, die die CORS-Header in ihrer Antwort enthalten muss. Ich habe die W3C-Spezifikation mehrmals gelesen und kann in dieser Preflight-Antwort nicht feststellen, was ich falsch mache, wenn überhaupt.