- Что такое Vite Proxy и зачем ему куки?
- Настройка прокси для кук в vite.config.js
- Типичные проблемы с куками и их решения
- Практический пример: аутентификация через прокси
- Оптимизация безопасности
- FAQ: Часто задаваемые вопросы
- Почему куки не отправляются через Vite proxy?
- Как отладить проблемы с куками?
- Можно ли использовать прокси для production-сборки?
- Как передавать куки между поддоменами?
- Чем заменить proxy в продакшене?
Что такое Vite Proxy и зачем ему куки?
Vite — современный инструмент для фронтенд-разработки, ускоряющий сборку проектов. Его прокси-сервер перенаправляет запросы во время разработки, чтобы обойти CORS-ограничения. Куки играют ключевую роль в аутентификации и сессиях, но при работе с прокси часто возникают проблемы с их передачей между клиентом и бэкендом.
Настройка прокси для кук в vite.config.js
Для корректной работы с куками добавьте в vite.config.js:
- Укажите
changeOrigin: true
для подмены заголовка Host - Активируйте
cookieDomainRewrite
для преобразования домена - Разрешите передачу учетных данных с
withCredentials: true
// Пример конфигурации
export default {
server: {
proxy: {
'/api': {
target: 'https://backend.example.com',
changeOrigin: true,
cookieDomainRewrite: 'localhost',
secure: false,
configure: (proxy) => {
proxy.on('proxyReq', (proxyReq) => {
proxyReq.setHeader('Cookie', 'session=12345');
});
}
}
}
}
}
Типичные проблемы с куками и их решения
- Куки не сохраняются: Проверьте
cookieDomainRewrite
и политику SameSite - Ошибки CORS: Добавьте заголовок
Access-Control-Allow-Credentials: true
на сервере - Сессии теряются: Убедитесь, что
withCredentials
включен в fetch/XHR запросах - HTTPS проблемы: Используйте
secure: false
для self-signed сертификатов
Практический пример: аутентификация через прокси
Шаги для настройки JWT-авторизации:
- Настройте прокси для маршрута /auth в Vite
- Добавьте middleware для инъекции кук в запросы
- В клиентском коде используйте:
fetch('/api/user', { credentials: 'include' })
- На сервере установите заголовки:
Access-Control-Allow-Origin: http://localhost:5173
Access-Control-Allow-Credentials: true
Оптимизация безопасности
- Никогда не используйте
secure: false
в продакшене - Ограничивайте
cookieDomainRewrite
доменом разработки - Регулярно обновляйте Vite для фиксов уязвимостей
- Используйте httpOnly флаг для чувствительных кук
FAQ: Часто задаваемые вопросы
Почему куки не отправляются через Vite proxy?
Основные причины: отсутствие credentials: 'include'
в запросе, неправильные CORS-заголовки на сервере или отсутствие cookieDomainRewrite
в конфиге.
Как отладить проблемы с куками?
Используйте вкладку Network в DevTools: проверяйте заголовки Set-Cookie в ответах и Cookie в запросах. Анализируйте предупреждения консоли браузера.
Можно ли использовать прокси для production-сборки?
Нет, Vite proxy работает только в dev-режиме. Для продакшена настройте Nginx или облачный прокси.
Как передавать куки между поддоменами?
Настройте cookieDomainRewrite: '.example.com'
и укажите домен в куках как .example.com
на сервере.
Чем заменить proxy в продакшене?
Используйте: Cloudflare Workers, Nginx reverse proxy, или настройку CORS на бэкенд-сервере.