So lehnen Sie eine CORS-Anfrage ab


5

Wenn ein Access-Control-Allow-OriginHTTP-Header in der Antwort auf einen CORS-Preflight (Cross-Origin Resource Sharing) fehlt, bedeutet dies:

  • Der Server unterstützt kein CORS? Oder,
  • Der Server verweigert den Zugriff?

Wenn der Server CORS nicht unterstützt, scheint es offensichtlich, dass der Header fehlen wird.

Aber wenn es CORS unterstützt, heißt das, dass der Zugriff verweigert wird?

Und umgekehrt, was sollte ein Server, der CORS implementiert, tun, um dem Client mitzuteilen, dass der Zugriff aufgrund von CORS verweigert wird? Sollte es mit einem Status wie antworten 403 Forbidden?

In jeder gefundenen Quelle wird erläutert, welche Header hinzugefügt werden, um einen domänenübergreifenden Zugriff zu ermöglichen. Es wird jedoch nicht erläutert, wie ein Zugriff verweigert werden kann.

** Bearbeiten: falsch gestellte Frage, meine schlechte, siehe Erklärung unten **

Der Fokus meiner Frage scheint im Vergleich zu dem, was ich erwartet hatte, nicht zum Thema zu gehören. In der Tat konzentriert sich eine Antwort auf die Serverkonfiguration, aber was für mich interessant war, war das Protokoll über HTTP.

Um genauer zu sein, habe ich die Frage gestellt, weil ich versucht habe, auf einen Server mit einer Cross-Anfrage zuzugreifen, und:

  • Der Server enthielt die CORS-Header nicht, während mein XMLHttpRequest sie enthielt
  • Der Browser hat Cross-Requests von swfMedien akzeptiert
  • Ich habe den Referrer der Medien überprüft und es ist tatsächlich ein anderer Iframe als das Ziel der Anfragen
  • Ich wusste nicht einmal, ob der Server CORS implementiert hat oder nicht
  • Ich besitze den Server nicht

Mein geringes Verständnis von CORS in HTTP und die Tatsache, dass eine Art Cross-Requests akzeptiert wurden, veranlassten mich zu der Frage, ob der Server meine Requests ablehnte und was ich falsch gemacht habe.

Ich werde eine Antwort posten, da ich glaube, dass ich sie seitdem gelöst habe.

Antworten:


4

Der domänenübergreifende Zugriff wird standardmäßig verweigert, obwohl dies als Sicherheitsrisiko angesehen wird. Um den Zugriff zu verweigern, müssen Sie die Konfiguration entfernen, die domänenübergreifende Aufrufe ermöglicht.

Bei einer Neuinstallation des Webservers ist CORS nicht sofort einsatzbereit, zumindest nicht für IIS, das ich kürzlich verwendet habe.

Überprüfen Sie, wie Sie verschiedene Webserver (un) konfigurieren, um CORS zu (verweigern): http://enable-cors.org/server.html


Bitte zitieren Sie die wesentlichen Teile der Antwort aus dem / den Verweis (en), da die Antwort ungültig werden kann, wenn sich die verlinkte (n) Seite (n) ändern.
DavidPostill

Die Antwort enthält keine spezifische Konfiguration des Links, auf den verwiesen wird, daher hängt sie nicht vom Seiteninhalt ab.
Mimo

Diese Antwort löst die ursprüngliche Frage und ein wenig mehr über Server, so dass ich sie als Lösung überprüfen lasse, obwohl die Frage aktualisiert wurde, um ihre Inkonsistenz gegenüber der Idee dahinter im Kopf des Autors (meines) auszudrücken.
Link-Akro

0

Wie @mimo sagte,

Der domänenübergreifende Zugriff wird standardmäßig verweigert

In diesem Fall müssen Sie CORS nicht deaktivieren. Es beantwortet die ursprüngliche Frage gut.

Wie die Bearbeitung erklärt, war ich teilweise verwirrt, weil ein SWF-Objekt irgendwo domänenübergreifend war, während XMLHttpRequest von derselben Domäne abgelehnt wurden. Lösung: SWF ist nicht an XHR-Richtlinien (SOP (gleicher Ursprung) oder CORS) gebunden. Das bedeutet, dass das Experiment überhaupt kein Problem darstellte, weshalb ich die Frage stellte: Der Server hat CORS nicht implementiert, und die Medien auf der Seite verwendeten es auch nicht, während XHR CORS verwendete und ausfiel.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.