Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Cross-Origin Resource Sharing (CORS) Konfiguration

Cross-Origin Resource Sharing (CORS) wird mit Hilfe von Access-Control-Allow-Origin und verwandten Headern gehandhabt. Access-Control-Allow-Origin definiert die nicht gleichen Ursprünge, die berechtigt sind, Anfragen an Seiten auf Ihrer Domain zu senden (d.h. über XMLHttpRequest oder fetch()).

Problem

Standardmäßig blockiert die Same-Origin-Policy von Skripten initiierte Cross-Origin HTTP-Anfragen. Es gibt mehrere Anwendungsfälle, die einen Zugriff von skriptübergreifenden Quellen erfordern; zum Beispiel Content Delivery Networks (CDNs), die das Hosting für JavaScript/CSS-Bibliotheken und öffentliche API-Endpunkte bereitstellen. Jedoch stellt der Cross-Origin-Zugriff ein großes Sicherheitsrisiko dar und muss sorgfältig kontrolliert werden.

Lösung

Verwenden Sie Access-Control-Allow-Origin, um die nicht gleichen Ursprünge zu definieren, die berechtigt sind, Anfragen an Seiten auf Ihrer Domain zu senden.

Wenn vorhanden, sollte Access-Control-Allow-Origin die minimale Anzahl an Ursprüngen und Ressourcen angeben, die für das Funktionieren Ihrer Website notwendig sind. Wenn Ihr Server beispielsweise sowohl eine Website als auch eine API bereitstellt, die für den entfernten XMLHttpRequest-Zugriff gedacht ist, sollten nur die API-Ressourcen den Header Access-Control-Allow-Origin zurückgeben.

Wenn Access-Control-Allow-Origin nicht korrekt gesetzt wird, können unautorisierte Ursprünge die Inhalte jeder Seite auf Ihrer Website lesen. Dies kann besonders gefährlich sein, wenn diese Seiten in der Lage sind, Anmeldeinformationen zu senden, wodurch Ihre Website potenziell CSRF-Angriffen ausgesetzt wird.

Wenn ein authentifizierter Zugriff von bestimmten Ursprüngen erforderlich ist, stellen Sie sicher, dass Access-Control-Allow-Origin nur auf diese Ursprünge gesetzt wird, anstatt den Origin-Header zu spiegeln. Wenn öffentlicher, nicht authentifizierter Zugriff erforderlich ist, setzen Sie Access-Control-Allow-Origin auf * und lassen Sie den Header Access-Control-Allow-Credentials weg. Andernfalls lassen Sie beide Header weg.

Beispiele

Erlauben Sie jeder Website, den Inhalt einer JavaScript-Bibliothek zu lesen:

http
Access-Control-Allow-Origin: *

Hinweis: Diese Einstellung ist erforderlich, damit die Subresource Integrity funktioniert.

Erlauben Sie https://random-dashboard.example.org, die zurückgegebenen Ergebnisse einer API zu lesen:

http
Access-Control-Allow-Origin: https://random-dashboard.example.org

Siehe auch