Cross-Origin Resource Sharing

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, um Webbrowsern oder auch anderen Webclients Cross-Origin-Requests zu ermöglichen.[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.

Funktionsweise[Bearbeiten]

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 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 Server bei seiner Antwort den Zugriff durch entsprechende HTTP-Header erlauben. Sendet der Server den nachfolgenden Header, so erlaubt er Anfragen von Seiten des dort genannten Servers und ein Cross-Origin-Request ist erfolgreich. Zugriffe von anderen Servern werden aufgrund der SOP weiterhin nicht erfolgreich durchgeführt.

HTTP-Header des Servers (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.

Browser-Unterstützung[Bearbeiten]

CORS wird von folgenden Rendering-Engines unterstützt:

CORS vs. JSONP[Bearbeiten]

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 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.

Einzelnachweise[Bearbeiten]

  1. Arbeitsvorlage des W3C, Stand 29. Januar 2013 (englisch)
  2. https://developer.mozilla.org/En/HTTP_access_control
  3. https://developer.mozilla.org/en/Gecko
  4. a b http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
  5. http://osvdb.org/59940
  6. http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx
  7. http://www.opera.com/docs/specs/presto2.10/#m232
  8. http://dev.opera.com/blog/hello-opera-12/

Weblinks[Bearbeiten]