Что такое CORS и почему он блокирует Angular-приложения
Cross-Origin Resource Sharing (CORS) — механизм безопасности браузеров, предотвращающий межсайтовые запросы. Когда Angular-приложение, запущенное на localhost:4200, обращается к API на другом домене (например, api.example.com), браузер блокирует запрос из-за политики одинакового источника. Это вызывает ошибки вида:
- «Access to XMLHttpRequest has been blocked by CORS policy»
- «No ‘Access-Control-Allow-Origin’ header is present»
Как прокси-сервер решает проблемы CORS в Angular
Прокси-сервер выступает посредником: Angular отправляет запросы не напрямую к API, а к локальному серверу разработки, который перенаправляет их на целевой домен. Поскольку запрос идет с одного origin (localhost), CORS-ограничения не применяются. Преимущества подхода:
- Не требует изменений бэкенда
- Работает в dev-режиме без деплоя
- Позволяет тестировать API с локальной машины
Пошаговая настройка прокси в Angular CLI
Создайте файл proxy.conf.json в корне проекта:
{
"/api/*": {
"target": "https://ваш-api-домен.com",
"secure": false,
"changeOrigin": true,
"logLevel": "debug",
"pathRewrite": {"^/api": ""}
}
}
Обновите angular.json:
"serve": {
"options": {
"proxyConfig": "proxy.conf.json"
}
}
Запустите приложение командой ng serve. Все запросы к /api будут перенаправлены через прокси.
Альтернативные методы обработки CORS
- Настройка сервера: Добавление заголовков
Access-Control-Allow-Originна бэкенде. - Chrome с отключенным CORS: Запуск браузера с флагом
--disable-web-security(только для тестов). - CORS Anywhere: Публичные прокси-сервисы для разработки.
Часто задаваемые вопросы (FAQ)
Q: Будет ли прокси работать в продакшене?
A: Нет, это решение только для разработки. Для продакшена настройте CORS на сервере или используйте облачный прокси.
Q: Как обрабатывать несколько API-эндпоинтов?
A: Добавьте несколько контекстных путей в proxy.conf.json:
{
"/api1/*": { "target": "https://api1.com" },
"/api2/*": { "target": "https://api2.net" }
}
Q: Почему после настройки прокси запросы всё равно блокируются?
A: Проверьте:
- Корректность пути в proxy.conf.json
- Перезапуск
ng serve - Отсутствие опечаток в URL запросов
Q: Можно ли использовать прокси с Angular Universal?
A: Да, но требуется кастомная настройка серверного прокси через Express.js или аналоги.








