Verwendung von Azure Front Door Standard/Premium mit Cross-Origin Resource Sharing (CORS)

Gilt für: ✔️ Front Door Standard ✔️ Front Door Premium

CORS (Cross Origin Resource Sharing) ist eine HTTP-Funktion, die es einer Webanwendung, die unter einer Domäne läuft, ermöglicht, auf Ressourcen in einer anderen Domäne zuzugreifen. Um die Möglichkeit von Crosssite-Scripting-Angriffen zu verringern, implementieren alle modernen Webbrowser eine Sicherheitsbeschränkung, die als Same-Origin-Policy bekannt ist. Diese Einschränkung hindert eine Website daran, APIs in einer anderen Domäne aufzurufen. CORS bietet eine sichere Methode, um einem Ursprung (der Ursprungsdomäne) das Aufrufen von APIs in einem anderen Ursprung zu ermöglichen.

So funktioniert es

Es gibt zwei Arten von CORS-Anfragen: einfache Anfragen und komplexe Anfragen.

Für einfache Anforderungen gilt Folgendes:

  1. Der Browser sendet die CORS-Anfrage mit einem weiteren Origin-HTTP-Anfrage-Header . Der Wert dieses Headers ist der Ursprung, der die Elternseite bedient hat, was als Kombination aus Protokoll,Domäne und Port definiert ist. Wenn eine Seite versuchthttps://www.contoso.com, auf die Daten eines Benutzers im Ursprung fabrikam.com zuzugreifen, wird folgender Anforderungskopf gesendet anfabrikam.com:

    Origin: https://www.contoso.com

  2. Der Server könnte mit einer der folgenden Antworten antworten:

    • Mit einem Access-Control-Allow-Origin-Header in der Antwort, der angibt, welche Herkunft-Website zulässig ist. Beispiel:

      Access-Control-Allow-Origin: https://www.contoso.com

    • Mit einem HTTP-Fehlercode (z. B. 403), falls der Server die ursprungsübergreifende Anforderung nach der Überprüfung des Origin-Headers nicht zulässt.

    • Ein Access-Control-Allow-Origin-Header mit einem Platzhalter, der alle Ursprünge erlaubt:

      Access-Control-Allow-Origin: *

Für komplexe Anfragen

Eine komplexe Anfrage ist eine CORS-Anfrage, bei der der Browser eine Preflight-Anfrage (also eine vorläufige Probe) senden muss, bevor die eigentliche CORS-Anfrage gesendet wird. Die Preflight-Anfrage bittet den Server um die Erlaubnis, mit der ursprünglichen CORS-Anfrage fortzufahren. Es ist eine OPTIONS Anfrage an dieselbe URL.

Tip

Weitere Details zu CORS-Flows und häufigen Fallstroffen finden Sie im Leitfaden zu CORS für REST-APIs.

Platzhalter oder Szenarien mit nur einem Ursprung

CORS auf Azure Front Door funktioniert automatisch ohne zusätzliche Konfiguration, wenn der Access-Control-Allow-Origin-Header auf Wildcard (*) oder einen Single Origin gesetzt ist. Azure Front Door speichert die erste Antwort, und die folgenden Anfragen verwenden denselben Header.

Wenn du Anfragen an Azure Front Door schickst, bevor du CORS auf deinem Ursprung einstellst, musst du Inhalte auf deinem Endpunkt löschen, um den Inhalt mit dem Access-Control-Allow-Origin-Header neu zu laden.

Multiple-Origin-Szenarien

Wenn du eine spezifische Liste der Ursprungsgebiete für CORS erlauben musst, wird es etwas komplizierter. Das Problem tritt auf, wenn das CDN den Access-Control-Allow-Origin-Header für den ersten CORS-Ursprung zwischenspeichert. Wenn ein anderer CORS-Ursprung eine weitere Anfrage stellt, bedient das CDN den zwischengespeicherten Access-Control-Allow-Origin-Header , der nicht übereinstimmt. Mehrere Methoden können dieses Problem beheben.

Azure Front Door rule set

Bei Azure Front Door kannst du eine Regel im Azure Front Door Rules Set erstellen, um den Origin-Header auf der Anfrage zu überprüfen. Wenn es ein gültiger Ursprung ist, setzt deine Regel den Header Access-Control-Allow-Origin mit dem richtigen Wert. In diesem Fall wird der Access-Control-Allow-Origin-Header vom Ursprungsserver der Datei ignoriert und die Azure Front Door-Regel-Engine verwaltet die erlaubten CORS-Ursprünge vollständig.

Screenshot eines Regelbeispiels mit Regelsatz.

Tip

Sie können weitere Aktionen zu Ihrer Regel hinzufügen, um andere Antwortheader zu ändern, wie zum Beispiel Access-Control-Allow-Methods.

Nächster Schritt