CORS říká prohlížeči, zda JavaScript na jedné doméně smí komunikovat s API na jiné doméně. Špatná konfigurace = nefunkční frontend nebo bezpečnostní díra.
CORS headers¶
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
Konfigurace — 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, })); // ❌ NIKDY: cors({ origin: ‘*‘, credentials: true })
Typické chyby¶
- Wildcard s credentials — nefunguje
- Reflection origin bez validace
- Null origin povolený
Klíčový takeaway¶
Whitelistujte konkrétní origins, nikdy wildcard s credentials.