Curious TechieDev Toolbox
Alle Leitfäden/Webstandards9 min read

Was ist CORS und die Same-Origin-Policy (SOP)?

Cross-Origin Resource Sharing verstehen: Preflight-OPTIONS-Anfragen, Sicherheitsheader, Cookies und Fehlerbehebung.

Wichtigste Erkenntnisse
  • Die Same-Origin-Policy (SOP) verbietet Skripten das Auslesen von Antworten fremder Origins (Protokoll, Host oder Port).
  • CORS erlaubt es Servern, mittels HTTP-Headern gezielt Ausnahmen für vertrauenswürdige externe Origins zu definieren.
  • Preflight OPTIONS-Anfragen prüfen Berechtigungen vor dem Ausführen verändernder Methoden.
  • Access-Control-Allow-Origin: * ist ungültig, sobald Cookies oder Authorization-Tokens übertragen werden.
  • CORS wird ausschließlich vom Webbrowser durchgesetzt, nicht bei Server-zu-Server-Aufrufen.

1. Was ist die Same-Origin-Policy (SOP)?

Die Same-Origin-Policy (SOP) ist eine zentrale Sicherheitsgrenze moderner Browser. Sie verhindert, dass Skripte auf https://bank.de unbefugt auf Cookies oder Fetch-Antworten von https://angreifer.de zugreifen.

Zwei URLs besitzen denselben Ursprung (Same Origin) genau dann, wenn Protokoll, Host (Domain) und Port exakt übereinstimmen:

https://api.example.com:443 vs https://example.com:443CROSS-ORIGIN (Subdomain weicht ab)
http://example.com:80 vs https://example.com:443CROSS-ORIGIN (Protokoll weicht ab: HTTP vs HTTPS)
https://example.com/app vs https://example.com/apiSAME-ORIGIN (Pfadunterschiede sind zulässig)

2. Wie CORS sicheren Cross-Origin-Zugriff ermöglicht

CORS (Cross-Origin Resource Sharing) gestattet Servern, über HTTP-Header genau zu deklarieren, welche fremden Ursprünge Zugriff auf die Daten erhalten dürfen:

  • Access-Control-Allow-Origin: Legt berechtigte Ursprünge fest (z. B. https://app.curious-techie.com).
  • Access-Control-Allow-Methods: Erlaubte HTTP-Methoden (z. B. GET, POST, PUT, DELETE).
  • Access-Control-Allow-Headers: Zulässige Anfrage-Header (z. B. Content-Type, Authorization).
  • Access-Control-Max-Age: Cache-Dauer der OPTIONS-Preflight-Antwort in Sekunden.

3. Preflight OPTIONS-Anfragen & Caching

Bei komplexen Anfragen (wie JSON-Payloads mit application/json oder Authorization-Headern) sendet der Browser automatisch eine vorgeschaltete HTTP OPTIONS Preflight-Anfrage.

4. Die Falle aus Anmeldedaten und Wildcard (*)

Ein gravierender Konfigurationsfehler bei sitzungsbasierten API-Anfragen:

Ungültige Spezifikations-Kombination: Access-Control-Allow-Origin: * + Access-Control-Allow-Credentials: true

Browser verweigern die Auswertung strikt, wenn die Wildcard * mit aktivierten Anmeldedaten kombiniert wird. Der Server muss den spezifischen geprüften Origin-Header zurückgeben.