Zum Inhalt springen

Cross-Origin Resource Sharing

CORS steuert im Browser die Freigabe von Antworten über Origin-Grenzen. Es ersetzt weder die Anmeldung noch die Berechtigungsprüfung einer API.

Auch bekannt alsCORS
API und Datenverträge

Antworten für einen anderen Origin freigeben

Cross-Origin Resource Sharing, kurz CORS, ist ein Verfahren mit HTTP-Headern. Ein Server gibt damit an, von welchen anderen Origins aus Browsercode auf seine Antworten zugreifen darf. Ein Origin umfasst Protokoll, Host und Port. Die Durchsetzung erfolgt im Browser; CORS ist keine Anmeldung an der API.

Portal und API getrennt betrachten

Ein fiktives Portal unter https://portal.example möchte Projektdaten von https://api.example/projects lesen. Die API kann den Portal-Origin mit Access-Control-Allow-Origin freigeben. Abhängig von Methode und Headern fragt der Browser vorher mit OPTIONS an, ob der eigentliche Aufruf erlaubt ist. Eine solche Vorabprüfung heißt Preflight; sie findet nicht bei jedem Aufruf statt.

Bei anderen Aufrufen kann die Anfrage bereits beim Server ankommen, obwohl der Browser die Antwort anschließend nicht für das Skript freigibt. Eine CORS-Fehlermeldung beweist deshalb nicht, dass serverseitig nichts passiert ist.

Sollen Sitzungscookies mitgesendet werden, müssen auch die Einstellungen für Zugangsdaten zusammenpassen. Statt des Platzhalters * ist bei solchen Antworten ein ausdrücklicher Origin nötig; zusätzlich ist Access-Control-Allow-Credentials relevant. Die Cookie-Regeln des Browsers gelten weiterhin. Unabhängig davon prüft die API Identität und Rechte für die angefragten Projektdaten.

Quellen