Safari schlägt CORS-Anforderung fehl, nachdem 302 @ umgeleitet h

Ich habe Probleme mit der Art und Weise, wie Safari CORS-Anforderungen verarbeitet. Stellen Sie sich folgendes Szenario vor:

DomainA hostet eine Seite, die eine XHR-Anforderung an DomainB sendet (der Ursprungsheader ist auf DomainA gesetzt).DomainB gibt 302 Redirect do DomainC zurück (der Ursprungsheader ist auf null gesetzt, was bei RFC in Ordnung zu sein scheint)DomainC gibt 200 Antworten mit aktuellem Inhalt zurück.

Dies funktioniert in Chrome, FF, schlägt jedoch auf Safari fehl (getestet unter Mozilla / 5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit / 600.8.9 (KHTML, wie Gecko) Version / 8.0.8 Safari / 600.8.9) .

Wenn ich die Anfrage ohne xhr.withCredentials stelle, stellt Safari zuerst eine Preflight-Anfrage an DomainC, die meiner Meinung nach nicht erforderlich ist, da es sich bei allen Anfragen um einfache Anfragen handelt, die ich jedoch bearbeiten kann. Das Problem ist, dass Safari nach der Preflight-Anforderung an DomainC mit der Meldung "Keine Anforderung von null möglich" fehlschlägt. Ich kann dies umgehen, indem ich Access-Control-Allow-Origin auf * setze und den Header Access-Control-Allow-Credentials lösche (die sich gegenseitig ausschließen), damit dieses Szenario funktioniert. Ich denke jedoch immer noch, dass dies kein korrektes Verhalten ist.

Nun, ich brauche Anmeldeinformationen, um sie weiterzugeben (und nein, ich kann sie nicht auf andere Weise weitergeben, da sie von Servern von Drittanbietern abhängt). Also, lasst uns @ setz

xhr.withCredentials

to true und wir sind wieder bei "Kann keine Anfrage von null stellen" und jetzt hilft es auch nicht, die Zugriffssteuerungs-Berechtigungsnachweise mit Platzhaltern zu versehen.

Ich denke, alle CORS-Header sind richtig eingestellt, aber bitte zögern Sie nicht, mich zu überprüfen. Testbeispiel finden Sie hier:http: //a.ihatesafari.co

Was geht hier vor sich? Ist es ein Fehler oder fehlt mir etwas?

Danke für Antworten

Antworten auf die Frage(2)

Ihre Antwort auf die Frage