Ответ
- Проксирование запросов
Настроить прокси-сервер (например, через Nginx или Node.js), который будет перенаправлять запросы к API.
// Пример настройки прокси в vite.config.js
server: {
proxy: {
'/api': {
target: 'https://api.example.com',
changeOrigin: true,
rewrite: (path) => path.replace(/^/api/, '')
}
}
}
- JSONP (устаревший, но работает для GET)
Использует тег<script>для обхода CORS, но только для GET-запросов.
function handleResponse(data) {
console.log(data);
}
const script = document.createElement('script');
script.src = 'https://api.example.com/data?callback=handleResponse';
document.body.appendChild(script);
- CORS Anywhere (для разработки)
Публичные прокси (например,https://cors-anywhere.herokuapp.com/), но не для продакшена.
fetch('https://cors-anywhere.herokuapp.com/https://api.example.com')
.then(response => response.json())
- Настройка заголовков на сервере
Если API под твоим контролем, добавь заголовки:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT
Важно: Лучший способ — договориться с бэкендом о правильной настройке CORS. Остальные методы — временные или для разработки.