Sobes.tech
Назад к вопросам
Senior
1

Как обойти CORS без изменения оригинального сервера и клиента?

Компании, где спрашивали
Type

Ответ от нейросети

sobes.tech AI

Обойти CORS без изменения оригинального сервера и клиента напрямую невозможно, так как политика CORS реализуется браузером для безопасности. Однако есть несколько обходных путей:

  • Прокси-сервер: настроить собственный сервер-прокси, который будет делать запросы к оригинальному серверу и возвращать данные клиенту. Браузер будет обращаться к вашему прокси, а не к оригинальному серверу, и CORS не будет блокировать запрос.

  • JSONP: если сервер поддерживает JSONP, можно использовать этот механизм, который не подчиняется CORS, но это устаревший и ограниченный метод.

  • Расширения браузера: во время разработки можно использовать расширения, отключающие CORS, но это не подходит для продакшена.

  • Использование iframe и postMessage: сложный вариант, который требует контроля над другим доменом.

Пример прокси на Node.js с использованием express и http-proxy-middleware:

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();

app.use('/api', createProxyMiddleware({
  target: 'https://original-server.com',
  changeOrigin: true,
  pathRewrite: { '^/api': '' },
}));

app.listen(3000);

Клиент будет делать запросы на http://localhost:3000/api/..., а прокси перенаправит их на оригинальный сервер, обходя CORS.