Проверяет понимание причин ошибок CORS при первом подключении к новому эндпоинту и методов их диагностики.
CORS (Cross-Origin Resource Sharing) — это механизм браузера, который ограничивает запросы к ресурсам с другого домена. Когда фронтенд на localhost:3000 обращается к API на api.example.com, браузер отправляет запрос и проверяет ответ сервера на наличие специальных заголовков. Если сервер не разрешает этот источник, браузер блокирует ответ, и вы видите ошибку в консоли.
Частая ситуация: бэкенд настроен корректно для других эндпоинтов, но новый эндпоинт всё равно вызывает ошибку. Это может быть связано с тем, что новый эндпоинт использует другой метод (например, PUT вместо GET) или включает кастомные заголовки, что вызывает preflight-запрос.
Первым делом откройте вкладку Network в DevTools и найдите запрос, который завершился ошибкой. Посмотрите на заголовки запроса и ответа. Если запрос имеет метод OPTIONS, значит, браузер выполняет preflight. Убедитесь, что сервер отвечает на OPTIONS с заголовками:
Access-Control-Allow-Origin: http://localhost:3000
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, AuthorizationЕсли сервер не отвечает на OPTIONS или возвращает ошибку, CORS не пройдёт. Также проверьте, что заголовок Access-Control-Allow-Origin не содержит звёздочку, если вы используете куки или авторизацию — тогда нужно указать конкретный домен.
Пример настройки CORS в Express:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
if (req.method === 'OPTIONS') {
return res.sendStatus(200);
}
next();
});В итоге, если бэкенд настроен правильно, но ошибка остаётся, проверьте, не блокирует ли запрос сам браузер из-за несоответствия заголовков или метода. Иногда помогает очистка кэша или использование режима инкогнито.
Вывод: CORS — это защитный механизм браузера, и ошибки чаще всего возникают из-за неправильной обработки preflight-запросов или неверных заголовков. Всегда проверяйте сетевые запросы в DevTools и убедитесь, что сервер отвечает корректно на OPTIONS, если ваш запрос не является простым.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
JavaScript
Networks
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию