it-swarm.com.de

Safari 10.1: XMLHttpRequest mit Abfrageparametern kann aufgrund von Zugriffskontrollprüfungen nicht geladen werden

Wenn Sie eine CORS-Anforderung in Safari 10.1 unter einer URL versuchen, die Abfrageparameter enthält (z. B. https://example.com/api?v=1 ), sagt Safari

XMLHttpRequest kann aufgrund von Zugriffskontrollprüfungen nicht geladen werden

Chrome/Firefox funktionieren gut.

Bei Anfragen von einer Seite ohne "? V = 1" funktioniert Safari ebenfalls einwandfrei.

Ich habe versucht, den Serverantwortheader von zu ändern

Zugriffskontrolle-Zulassen-Ursprung: https://example.com

zu

Access-Control-Allow-Origin: https://example.com/api?v=1

aber das bricht Chrome.

Irgendwelche Vorschläge?

21

Der Versuch könnte funktionieren - 

Access-Control-Allow-Origin: <Origin> | *
2
mdeora

Wenn jemand auf diesen Fehler stößt, ist er gerade in der Anwendung aufgetreten, die ich erstellt habe. In meinem Fall stellte sich heraus, dass es sich um ein Trailing/im Uri handelte, das eine 301-Antwort verursachte, die aus irgendeinem Grund von Safari als 500-Antwort interpretiert wurde.

1
Christian Kaal

Sie haben Probleme mit CORS.

Einige mögliche Ursachen:

  • Der Header Access-Control-Allow-Origin kann nur auf der Serverseite festgelegt werden, nicht im Clientskript. (Sie haben nicht klar gemacht, dass Sie das richtig gemacht haben.)
  • Sind Sie sicher, dass das Protokoll (http vs https vs vielleicht sogar file) genau das gleiche ist? 
  • Wenn Sie möglicherweise mehrere Subdomains haben, müssen Sie Ihre Konfiguration (z. B. Apache) mit etwas wie "^http(s)?://(.+\.)?test\.com$. einrichten.
    Der ^ markiert den Beginn der Zeile, um zu verhindern, dass etwas vor dieser URL erscheint. Sie brauchen ein Protokoll und erlauben Ihnen beides. Eine Unterdomäne ist optional. Und $ markiert das Zeilenende (Sie müssen keine Unterseiten festlegen, da Origin nur Host-basiert ist).
  • Wie bereits erwähnt, kann here durch Hinzufügen von Access-Control-Allow-Headers: Origin zur Serverkonfiguration eine Lösung sein. Vergleichen Sie die tatsächlichen Anfragen, die in Safari gemacht wurden, mit den erfolgreichen Anforderungen von Firefox oder Chrome, um möglicherweise fehlende Kopfzeilen zu finden (und vergleichen Sie sie möglicherweise auch mit Ihrer Serverkonfiguration).
1
Seika85