Glossar App Entwicklung

CORS (Cross-Origin Resource Sharing)

CORS ist ein Sicherheitsmechanismus, der es Webbrowsern ermöglicht, Anfragen an andere Domains zu senden, als diejenige, von der die aktuell besuchte Webseite geladen wurde. Dieser Mechanismus ermöglicht die Kommunikation zwischen verschiedenen Ursprüngen (Domains), indem er bestimmte Regeln und Header für HTTP-Anfragen und -Antworten festlegt, um die Sicherheit und den Schutz der Webanwendungen und Benutzerdaten zu gewährleisten.

Standardmäßig verbieten Webbrowser das Senden von Anfragen zwischen verschiedenen Ursprüngen aufgrund der Same-Origin-Policy. Diese Sicherheitsrichtlinie schützt Benutzer vor potenziell schädlichen Angriffen, wie Cross-Site-Request-Forgery (CSRF) oder Clickjacking, die die Integrität und Vertraulichkeit von Benutzerdaten gefährden könnten.

CORS kommt ins Spiel, wenn Webanwendungen Ressourcen von anderen Ursprüngen anfordern müssen, wie zum Beispiel APIs, Schriftarten oder Bilder. CORS ermöglicht es Servern, bestimmte Regeln und Header in ihren HTTP-Antworten anzugeben, um den Zugriff auf Ressourcen für Webbrowser aus anderen Ursprüngen zu erlauben oder einzuschränken. Einige der wichtigsten CORS-Header sind:

  • Access-Control-Allow-Origin: Gibt die Ursprünge an, die auf die Ressource zugreifen dürfen.
  • Access-Control-Allow-Methods: Legt die HTTP-Methoden (z.B. GET, POST, PUT) fest, die von der angeforderten Ressource unterstützt werden.
  • Access-Control-Allow-Headers: Listet die HTTP-Header auf, die bei der Anfrage an die Ressource verwendet werden dürfen.
  • Access-Control-Allow-Credentials: Gibt an, ob die Anfrage mit Anmeldeinformationen (z.B. Cookies) gesendet werden darf.
  • Access-Control-Max-Age: Legt die maximale Zeit in Sekunden fest, für die die CORS-Präflights gespeichert werden dürfen.

Um CORS in Webanwendungen zu implementieren, müssen Entwickler sowohl auf Server- als auch auf Client-Seite Anpassungen vornehmen. Auf Server-Seite müssen die entsprechenden CORS-Header in den HTTP-Antworten konfiguriert werden, während auf Client-Seite eventuell spezielle Anfrage-Methoden (z.B. fetch() oder XMLHttpRequest mit CORS-Anforderungen) verwendet werden müssen. Die genaue Implementierung kann je nach verwendeter Programmiersprache, Framework und Infrastruktur variieren.