CORS (Cross-Origin Resource Sharing)

{{heroImg}} logo
Cross-Origin Resource Sharing (CORS) ist ein Sicherheitsmechanismus, der es Webbrowsern ermöglicht, kontrolliert auf Ressourcen von anderen Domains als der eigenen zuzugreifen. Es ist ein Kompromiss zwischen Flexibilität und Sicherheit im modernen Web.

Was ist CORS?

Stellen Sie sich CORS wie einen Türsteher vor, der kontrolliert, welche Webseiten auf Ressourcen (wie Daten oder Bilder) von anderen Webseiten zugreifen dürfen. Ohne diese Kontrolle könnten böswillige Websites einfach Daten von anderen Seiten abgreifen. CORS erweitert die Same-Origin-Policy des Browsers, um sichere domainübergreifende Zugriffe zu ermöglichen.

Wie funktioniert CORS?

  • Der Browser sendet bei Anfragen an andere Domains spezielle CORS-Header
  • Der Server antwortet mit Erlaubnis oder Ablehnung durch entsprechende Header
  • Bei komplexen Anfragen erfolgt zuerst eine "Preflight"-Anfrage
  • Der Browser setzt die Regeln automatisch durch

Wichtige CORS-Header

  • Access-Control-Allow-Origin: Legt fest, welche Domains zugreifen dürfen
  • Access-Control-Allow-Methods: Erlaubte HTTP-Methoden
  • Access-Control-Allow-Headers: Zugelassene HTTP-Header
  • Access-Control-Allow-Credentials: Erlaubt Authentifizierungsdaten

Code-Beispiele

Server-seitige CORS-Konfiguration

// Express.js Beispiel
app.use((req, res, next) => {
  res.header("Access-Control-Allow-Origin", "https://example.com");
  res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
  res.header("Access-Control-Allow-Headers", "Content-Type");
  next();
});

Client-seitige CORS-Anfrage

// Fetch API mit CORS
fetch("https://api.example.com/data", {
  method: "POST",
  credentials: "include",
  headers: {
    "Content-Type": "application/json"
  }
});

Sicherheitsaspekte

  • Genaue Kontrolle über erlaubte Domains
  • Schutz vor Cross-Site Request Forgery (CSRF)
  • Sichere Handhabung von Authentifizierungsdaten
  • Einschränkung erlaubter HTTP-Methoden
  • Kontrolle über exponierte Header

Häufige Anwendungsfälle

  • API-Zugriffe von verschiedenen Domains
  • Single-Page Applications (SPAs)
  • Microservices-Kommunikation
  • Ressourcen-Sharing zwischen Subdomains
  • Integration von Drittanbieter-Diensten

Verwandte Begriffe