- Что такое Webpack Dev Server и зачем проксировать запросы?
- Настройка прокси для всех запросов в Webpack Dev Server
- Пример конфигурации прокси
- Расширенные настройки прокси
- Решение распространенных проблем
- Заключение
- Часто задаваемые вопросы (FAQ)
- Как проверить, работает ли прокси?
- Можно ли проксировать несколько доменов?
- Почему не проксируются POST-запросы?
- Как отключить проверку SSL?
- Работает ли с GraphQL?
Что такое Webpack Dev Server и зачем проксировать запросы?
Webpack Dev Server (WDS) — инструмент для разработки, предоставляющий live reloading и горячую замену модулей. Проксирование запросов решает ключевую проблему: обход CORS (Cross-Origin Resource Sharing) ошибок при работе с API. Когда фронтенд и бэкенд работают на разных доменах или портах, браузер блокирует запросы. Прокси WDS перенаправляет запросы через сервер разработки, создавая иллюзию единого источника.
Настройка прокси для всех запросов в Webpack Dev Server
Для проксирования всех запросов добавьте в webpack.config.js
секцию devServer.proxy
с конфигурацией:
- Установите target — URL вашего бэкенд-сервера (например,
http://localhost:3000
) - Используйте pathRewrite — опционально для изменения путей
- Активируйте changeOrigin: true — для корректной работы с виртуальными хостами
Пример конфигурации прокси
// webpack.config.js
module.exports = {
devServer: {
proxy: {
'**': { // ** означает "все пути"
target: 'http://your-backend-domain.com',
changeOrigin: true,
secure: false // для HTTPS с самоподписанными сертификатами
}
}
}
};
Этот код перенаправляет ВСЕ HTTP-запросы на указанный target
. Для тестирования API:
- Запустите WDS:
webpack serve
- Обращайтесь к API через
localhost:8080/api/data
(запрос уйдет на бэкенд)
Расширенные настройки прокси
- Фильтрация путей: Используйте контекст для выборочного проксирования:
proxy: { '/api/**': { target: 'http://api.example.com', pathRewrite: { '^/api': '' } // удаляет /api из URL } }
- WebSocket поддержка: Добавьте
ws: true
для проксирования WebSockets - Обходные пути:
bypass
-функция для кастомной логики перенаправления
Решение распространенных проблем
- Запросы не проксируются: Проверьте синтаксис конфига и перезапустите WDS. Убедитесь, что нет опечаток в
target
- Ошибки CORS остаются: Добавьте
headers: { 'Access-Control-Allow-Origin': '*' }
в конфиг прокси - HTTPS ошибки: При работе с самоподписанными сертификатами используйте
secure: false
- Медленные запросы: Отключите агрессивные опции like
logLevel: 'debug'
для диагностики
Заключение
Проксирование всех запросов через Webpack Dev Server устраняет CORS-ограничения и ускоряет разработку. Конфигурация с '**'
обеспечивает универсальное решение для любых API. Помните: прокси работает ТОЛЬКО в режиме разработки. Для продакшена настройте аналогичные правила на уровне Nginx или облачного балансировщика.
Часто задаваемые вопросы (FAQ)
Как проверить, работает ли прокси?
Откройте DevTools → вкладка Network. При запросе к localhost:8080/api
в Initiator будет указан «Proxy».
Можно ли проксировать несколько доменов?
Да! Добавьте несколько ключей в объект proxy
:
proxy: {
'/api1/**': { target: 'http://domain1.com' },
'/api2/**': { target: 'http://domain2.com' }
}
Почему не проксируются POST-запросы?
WDS проксирует все методы HTTP по умолчанию. Проверьте changeOrigin: true
и отсутствие CORS preflight-ошибок.
Как отключить проверку SSL?
Добавьте secure: false
в конфиг прокси для игнорирования ошибок сертификатов.
Работает ли с GraphQL?
Да! Настройте прокси для эндпоинта GraphQL (например, /graphql
). Поддерживаются все типы запросов.