CORS teilt dem Browser mit, ob JavaScript auf einer Domain mit einer API auf einer anderen Domain kommunizieren darf. Falsche Konfiguration = nicht funktionierendes Frontend oder Sicherheitsluecke.
CORS-Header¶
Access-Control-Allow-Origin: https://app.example.com Access-Control-Allow-Methods: GET, POST, PUT, DELETE Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Credentials: true
Konfiguration – Express.js¶
const cors = require(‘cors’); const allowed = [‘https://app.example.com’, ‘https://admin.example.com’]; app.use(cors({ origin: (origin, cb) => { if (!origin || allowed.includes(origin)) cb(null, true); else cb(new Error(‘Not allowed’)); }, credentials: true, })); // ❌ NIEMALS: cors({ origin: ‘*‘, credentials: true })
Typische Fehler¶
- Wildcard mit Credentials – funktioniert nicht
- Origin-Reflection ohne Validierung
- Null-Origin erlaubt
Wichtigste Erkenntnis¶
Konkrete Origins whitelisten, niemals Wildcard mit Credentials.