CORS
Steht für „Cross-Origin Resource Sharing“. CORS ermöglicht es Skripten auf Webseiten, Ressourcen von anderen Domains anzufordern. Die meisten Webbrowser blockieren diese Arten von Anfragen aus Sicherheitsgründen standardmäßig.
Eine Webseite kann Ressourcen von einer anderen Domain anfordern – solange die Anfragen aus dem HTML kommen. So kann der Abschnitt <head> beispielsweise auf Ressourcen wie CSS-Dateien, Schriftarten und JS-Dateien von anderen Domains verweisen. Beispiele sind Google-Analytics-Skripte, jQuery-Bibliotheken und Schriftarten, die auf einem anderen Server gehostet werden. Ebenso kann der Abschnitt <body> Bilder von einem CDN oder einer anderen Domain anfordern. Ressourcenanforderungen aus anderen Quellen im HTML benötigen keine CORS-Berechtigungen.
Wenn ein Skript oder ein iframe-Element eine Anfrage an eine andere Quelle stellt, ist CORS erforderlich. So kann eine AJAX-Methode – die nach dem Laden der Seite ausgeführt wird – keine Ressource von einer anderen Domain anfordern. CORS überschreibt diese standardmäßige Browsereinstellung und ermöglicht, dass die Anfrage ausgeführt wird.
CORS wird mithilfe von „Access-Control“-HTTP-Headern implementiert. Ein Serveradministrator kann die Antwort-Header hinzufügen oder ändern, die an den Browser eines Clients gesendet werden, wenn eine Webseite aufgerufen wird. Diese Einstellungen, die auf Apache- und IIS-Server angewendet werden können, gelten möglicherweise nur für eine bestimmte Website oder für den gesamten Server. Im Folgenden finden Sie häufig verwendete Anfrage- und Antwort-Header:
CORS-Anfrage-Header:
- Origin
- Access-Control-Request-Method
- Access-Control-Request-Headers
CORS-Antwort-Header:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
CORS-Beispiel
Wenn ein Skript auf techterms.com mit einer GET-Aktion eine Ressource von sharpened.com anfordert, kann es die folgenden Anfrage-Header senden:
Origin: https://techterms.com
Access-Control-Request-Method: GET
Um die Anfrage zu erlauben, kann sharpened.com mit den folgenden Headern antworten:
Access-Control-Allow-Origin: https://techterms.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Origin kann auf bestimmte Domains oder mithilfe eines Sternchens (*) als Platzhalter festgelegt werden. Die Platzhalter-Einstellung erlaubt Ressourcenanforderungen aus anderen Quellen von allen Domains, was ein Sicherheitsrisiko darstellen kann. Access-Control-Allow-Methods kann auf PUT, POST, DELETE und andere Methoden festgelegt werden, einschließlich einer Platzhalter-Einstellung (*), die alle Methoden erlaubt.
Testen Sie Ihr Wissen