- Что такое Webpack Dev Server Proxy и зачем он нужен
- Как настроить прокси для API в Webpack Dev Server
- Практические примеры конфигурации прокси
- Простой прокси для REST API
- Прокси с перезаписью путей
- Несколько прокси-правил
- Преимущества использования прокси в разработке
- Типичные проблемы и решения
- FAQ: Частые вопросы о Webpack Dev Server Proxy
- Как проксировать WebSockets?
- Можно ли использовать прокси для нескольких доменов?
- Как избежать утечки учетных данных при работе с HTTPS?
- Работает ли прокси с GraphQL API?
- Как логировать прокси-запросы для отладки?
- Заключение
Что такое Webpack Dev Server Proxy и зачем он нужен
Webpack Dev Server Proxy – мощный инструмент для разработчиков, решающий проблему CORS (Cross-Origin Resource Sharing) при работе с API во время локальной разработки. Когда фронтенд и бэкенд работают на разных доменах или портах, браузер блокирует запросы из соображений безопасности. Прокси-сервер Webpack перенаправляет API-запросы с вашего локального сервера разработки (например, localhost:8080) на целевой бэкенд-сервер, создавая иллюзию одинакового источника. Это избавляет от ошибок CORS и ускоряет разработку.
Как настроить прокси для API в Webpack Dev Server
Настройка прокси осуществляется через файл webpack.config.js
в разделе devServer.proxy
. Рассмотрим базовый пример:
// webpack.config.js
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'https://production-server.com',
changeOrigin: true,
pathRewrite: {'^/api': ''}
}
}
}
};
Ключевые параметры конфигурации:
- target: URL целевого сервера API
- changeOrigin: изменяет заголовок Origin на целевой домен (обязательно для большинства API)
- pathRewrite: перезаписывает путь запроса (в примере удаляет префикс /api)
Практические примеры конфигурации прокси
Простой прокси для REST API
proxy: {
'/users': {
target: 'http://api.example.com',
changeOrigin: true
}
}
Все запросы к /users
будут перенаправлены на http://api.example.com/users
.
Прокси с перезаписью путей
proxy: {
'/backend': {
target: 'https://staging-api.site',
pathRewrite: {'^/backend': '/v2'},
secure: false
}
}
Запрос к /backend/data
преобразуется в https://staging-api.site/v2/data
.
Несколько прокси-правил
proxy: [{
context: ['/auth', '/profile'],
target: 'https://auth-service.com',
}, {
context: '/products',
target: 'https://product-api.com',
ws: true // поддержка WebSockets
}]
Преимущества использования прокси в разработке
- ✅ Устранение ошибок CORS без изменений на бэкенде
- ✅ Возможность работы с разными средами (dev/staging/prod)
- ✅ Легкая отладка через логи запросов
- ✅ Поддержка WebSockets и HTTPS
- ✅ Фиксация кук и авторизационных заголовков
Типичные проблемы и решения
- Прокси не работает: проверьте
changeOrigin: true
и отсутствие опечаток в путях - HTTPS ошибки: используйте
secure: false
для самоподписанных сертификатов - Запросы не перехватываются: убедитесь, что путь в конфиге совпадает с началом URL запроса
- Проблемы с куками: добавьте
cookieDomainRewrite: 'localhost'
FAQ: Частые вопросы о Webpack Dev Server Proxy
Как проксировать WebSockets?
Добавьте опцию ws: true
в конфигурацию прокси. Webpack Dev Server автоматически перенаправит websocket-соединения.
Можно ли использовать прокси для нескольких доменов?
Да, достаточно определить несколько правил в объекте proxy. Каждое правило может указывать на разный target
.
Как избежать утечки учетных данных при работе с HTTPS?
Используйте headers: { 'Connection': 'keep-alive' }
и secure: false
в тестовых средах. Для продакшена прокси не используется.
Работает ли прокси с GraphQL API?
Да, прокси работает с любыми HTTP-запросами. Для GraphQL достаточно настроить путь к эндпоинту (например, /graphql
).
Как логировать прокси-запросы для отладки?
Добавьте logLevel: 'debug'
в конфиг devServer. В консоли появятся детали запросов и ответов.
Заключение
Webpack Dev Server Proxy – незаменимый инструмент для современной фронтенд-разработки, устраняющий сложности взаимодействия с API. Правильная настройка прокси экономит часы отладки CORS-ошибок, обеспечивает реалистичное тестирование и ускоряет разработку. Используйте приведенные примеры конфигураций, учитывайте особенности вашего API, и кросс-доменные запросы больше не будут проблемой. Для продвинутых сценариев изучите документацию webpack-dev-server и http-proxy-middleware.