CORS

CORS (Cross-Origin Resource Sharing) ist ein Browser-Sicherheitsmechanismus, der regelt, wie Daten sicher zwischen verschiedenen Domains geteilt werden können.

CORS (Cross-Origin Resource Sharing) ist ein Sicherheitsmechanismus in Webbrowsern, der steuert, wie Ressourcen (z. B. APIs, Daten) zwischen verschiedenen Domains geteilt werden können.

Standardmäßig blockieren Browser Cross-Origin-Anfragen (also Anfragen von example.com an api.otherdomain.com) aufgrund der Same-Origin Policy, um Angriffe wie Cross-Site Request Forgery (CSRF) zu verhindern.

CORS ermöglicht es Servern jedoch, über HTTP-Header explizit zu erlauben, welche Domains, Methoden oder Header auf ihre Ressourcen zugreifen dürfen.

Wie CORS funktioniert

  1. Eine Webanwendung auf domain-a.com versucht, Daten von api.domain-b.com zu laden.
  2. Der Browser prüft die Same-Origin Policy und sendet ggf. eine Preflight-Anfrage (mit der HTTP-Methode OPTIONS).
  3. Der Server antwortet mit CORS-Headern wie:
Access-Control-Allow-Origin: https://domain-a.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type
  1. Wenn die Antwort die passende Erlaubnis enthält, lässt der Browser die Anfrage durch.

Wichtige CORS-Header

  • Access-Control-Allow-Origin – Gibt an, welche Ursprünge (Domains) Zugriff haben.
  • Access-Control-Allow-Methods – Erlaubte HTTP-Methoden (z. B. GET, POST, PUT).
  • Access-Control-Allow-Headers – Erlaubte zusätzliche Header.
  • Access-Control-Allow-Credentials – Erlaubt Cookies/Authentifizierungsdaten in Cross-Origin-Anfragen.

Beispiel in Express.js (Node.js)

const express = require("express");
const cors = require("cors");

const app = express();
app.use(cors({ origin: "https://domain-a.com" }));

app.get("/data", (req, res) => {
  res.json({ message: "CORS enabled for domain-a.com" });
});

app.listen(3000, () => console.log("Server running on port 3000"));

Vorteile von CORS

  • Ermöglicht sichere Datenfreigabe zwischen verschiedenen Domains.
  • Unterstützt moderne Webanwendungen, die APIs nutzen.
  • Verhindert Missbrauch durch die Same-Origin Policy.

Herausforderungen

  • Fehlkonfiguration – Zu breite Regeln (z. B. Access-Control-Allow-Origin: *) können Sicherheitsrisiken öffnen.
  • Komplexität – Preflight-Anfragen können Performance beeinträchtigen.
  • Kompatibilität – Unterschiedliche Browser verhalten sich manchmal leicht unterschiedlich.

Fazit

CORS ist ein zentraler Mechanismus für sichere und flexible Webentwicklung. Er ermöglicht kontrollierte Kommunikation zwischen verschiedenen Domains und schützt gleichzeitig Nutzer vor Angriffen.