Top-Fragen
Zeitleiste
Chat
Kontext
Cross-Origin Resource Sharing
Webbrowsern oder auch anderen Webclients Cross-Origin-Requests ermöglichender Mechanismus Aus Wikipedia, der freien Enzyklopädie
Remove ads
Cross-Origin Resource Sharing (CORS), deutsch: „Ursprungsübergreifende Ressourcenfreigabe“, ist ein Mechanismus, der Webbrowsern oder auch anderen Webclients Cross-Origin-Requests ermöglicht.[1] Zugriffe dieser Art sind normalerweise durch die Same-Origin-Policy (SOP) untersagt. CORS ist ein Kompromiss zugunsten größerer Flexibilität im Internet unter Berücksichtigung möglichst hoher Sicherheitsmaßnahmen.
Remove ads
Schutzziel
Die SOP und die CORS-Regeln schützen die Ressourcen eines Webservers vor unerwünschten Zugriffen durch Browser, die sich im Kontext einer anderen Domain befinden. Das bedeutet: Durch CORS reglementiert der Betreiber eines Webservers den Zugriff auf dessen Ressourcen – also z. B. Daten, die der Server über eine Web-Schnittstelle verfügbar macht. Der Betreiber des Servers kann durch CORS Ausnahmen für Domains erstellen, aus deren Kontext der Browserzugriff möglich sein soll. Browser, die sich auf kompromittierten oder bösartigen Webseiten befinden, lehnen bei richtiger CORS-Konfiguration den Zugriff auf den fremden Server ab. Die Durchsetzung der Schutzziele anhand der vom angefragten Server definierten CORS-Regeln obliegt also dem Browser.[2][3]
Dadurch schützen die Browser ihre Benutzer davor, dass fremde Webseiten über den Browser des Benutzer auf Ressourcen zugreifen, die nicht für sie gedacht sind. Das trägt dazu bei, die Vertraulichkeit, Integrität und Verfügbarkeit der geschützten Ressourcen auf dem Server zu schützen.
Remove ads
Funktionsweise
Zusammenfassung
Kontext
Die Einschränkungen, die durch die SOP auferlegt sind, können vom jeweiligen Server, der angefragt wird, für bestimmte Clients aufgehoben werden.
Damit die Anfrage eines Skripts auf einer Webseite, z. B. http://foo.example
, an einen Server einer abweichenden Domain, z. B. http://bar.example
, erfolgreich durchgeführt werden kann, muss der referenzierte Server bei seiner Antwort den Zugriff durch entsprechende HTTP-Header erlauben.
Sendet bar.example
den unten aufgeführten Header Access-Control-Allow-Origin
, so erlaubt er dem Skript vom Server foo.example
den Zugriff auf Ressourcen, die auf ihm (bar.example
) gespeichert sind. Ein Cross-Origin-Request kann somit erfolgreich durchgeführt werden. Zugriffe auf andere Server werden aufgrund der SOP weiterhin nicht erfolgreich durchgeführt.
HTTP-Header, gesetzt durch den Server bar.example
(Beispiel):
Access-Control-Allow-Origin: http://foo.example
Weitere Access-Control-*
-Header können das Zugriffsverhalten zusätzlich einschränken und die Sicherheit somit erhöhen, um den Server vor unberechtigten Anfragen zu schützen.
CORS-Ressource, die ausschließlich über die HTTP-GET Methode erreichbar ist:
Access-Control-Allow-Methods: GET
Remove ads
Browser-Unterstützung
CORS wird von folgenden Rendering-Engines unterstützt:
- Gecko 1.9.1+ (Mozilla Firefox 3.5+[3], SeaMonkey 2.0+[4]).
- WebKit (Apple Safari 4+,[5] Google Chrome 3+[6])
- MSHTML/Trident 4.0+ (Internet Explorer 10+[7], Internet Explorer 8 und 9 bieten teilweise Unterstützung durch das XDomainRequest-Objekt.[5])
- Presto 2.10.232+[8] (Opera 12+[9])
CORS vs. JSONP
CORS kann als Alternative für JSONP genutzt werden. Während JSONP nur GET-Anfragen unterstützt, bietet CORS auch Unterstützung für andere HTTP-Anfragen. Mit der Verwendung von CORS ist es Webentwicklern möglich, normale XMLHttpRequests bzw. die JavaScript Fetch API zu benutzen, die eine bessere Fehlerbehandlung als JSONP bieten. Auf der anderen Seite wird JSONP auch von Browsern unterstützt, die keine CORS-Unterstützung bieten.
Remove ads
Einzelnachweise
Weblinks
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads