CORS, oder Cross-Origin Resource Sharing, ist eine entscheidende Browser-Sicherheitsfunktion, die festlegt, wie Webseiten Ressourcen (wie Schriftarten, Skripte oder Daten von APIs) von einer anderen Domain anfordern können als der, die die ursprüngliche Seite bereitgestellt hat. Standardmäßig setzen Browser eine Same-Origin Policy durch, die Webseiten daran hindert, Anfragen an einen anderen Ursprung (Domain, Protokoll oder Port) zu stellen, um zu verhindern, dass bösartige Skripte von einer Seite auf sensible Daten einer anderen zugreifen.
Moderne Webanwendungen müssen jedoch oft auf Ressourcen von verschiedenen Ursprüngen zugreifen (z. B. eine Frontend-Anwendung auf app.example.com, die Daten von einer API auf api.example.com abruft). CORS bietet eine sichere Möglichkeit, die Same-Origin Policy zu lockern. Es funktioniert, indem es spezielle HTTP-Header zu den Antworten des Servers hinzufügt, die angeben, welche Ursprünge auf seine Ressourcen zugreifen dürfen. Wenn ein Browser eine Cross-Origin-Anfrage erkennt, sendet er zuerst eine „Preflight“-OPTIONS-Anfrage an den Server, um diese Header zu überprüfen.
Wichtige CORS-Header sind:
Access-Control-Allow-Origin: Gibt an, welche Ursprünge auf die Ressource zugreifen dürfen (z. B.Access-Control-Allow-Origin: https://app.example.comoder*für jeden Ursprung).Access-Control-Allow-Methods: Gibt die erlaubten HTTP-Methoden an (z. B.GET, POST, PUT).Access-Control-Allow-Headers: Gibt an, welche HTTP-Header in der eigentlichen Anfrage verwendet werden dürfen.
Die korrekte Konfiguration von CORS ist für die Sicherheit und Funktionalität vieler Webanwendungen unerlässlich. Fehlkonfigurationen können entweder legitime Anfragen blockieren oder, schlimmer noch, deine API für unautorisierten Zugriff von jedem Ursprung aus freigeben, wodurch Sicherheitslücken entstehen.