Как настраивается CORS?
DOM и браузер
CORS настраивается на сервере через заголовки `Access-Control-Allow-, которыми сервер разрешает конкретные origin, методы и заголовки, и обрабатывает preflight OPTIONS`.**
Основные заголовки
Access-Control-Allow-Origin: https://app.com # разрешённый origin
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Credentials: true # для cookie/credentials
Access-Control-Max-Age: 86400 # кеш preflightНастройка (Express)
Обычно через middleware cors:
const cors = require('cors');
app.use(cors({
origin: 'https://app.com', // конкретный origin, не '*' для приватных API
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true,
}));Preflight
Для сложных запросов браузер шлёт OPTIONS; сервер должен ответить нужными заголовками и статусом 204. Middleware cors делает это автоматически.
Правила
- Credentials + origin: при
credentials: trueнельзяorigin: '*'— только конкретный. - Разрешать только доверенные origin (список), не
*для приватных API. - Настраивать методы и заголовки минимально необходимыми.
Коротко для собеседования
CORS настраивают на сервере заголовками Access-Control-Allow-Origin/Methods/Headers/Credentials и ответом на preflight OPTIONS (обычно middleware cors). При credentials: true origin должен быть конкретным (не *); разрешают только доверенные источники.