Делаю запросы между двумя локальными серверами, возникает ошибка CORP

Рейтинг: 0Ответов: 1Опубликовано: 23.06.2023

Работаю на WinCCOA, развернул на нем локальный сервер (localhost:86) и параллельно на том же ПК развернул другой локальный сервер (localhost:5000), пытаюсь передать GET запрос с одного локального сервера на другой, но из-за того что порты разные появляется ошибка CORP. Расскажите как можно обойти ошибку не прибегая к настройке сервера и браузера? Может нужно что-то передать в заголовке метода GET? Пример запроса:

var x = new XMLHttpRequest();
x.open("GET", "/methodSendToWincc?n=" + n, true);
x.send();

Ответы

▲ 1Принят

Для обхода ошибки CORS вы можете использовать прокси-сервер. Для этого необходимо создать свой сервер (например, на Node.js) и настроить его таким образом, чтобы он получал запросы с одного локального сервера (localhost:5000), а затем перенаправлял их на другой локальный сервер (localhost:86).

Например, если вы используете Express.js, то пример кода для создания такого сервера может выглядеть следующим образом:

const express = require('express');
const request = require('request');

const app = express();

app.get('/methodSendToWincc', (req, res) => {
  const url = 'http://localhost:86/methodSendToWincc?n=' + req.query.n;
  req.pipe(request(url)).pipe(res);
});

app.listen(5000, () => {
  console.log('Proxy server is running on http://localhost:5000');
});

Затем вы можете изменить свой запрос на:

var x = new XMLHttpRequest();
x.open("GET", "http://localhost:5000/methodSendToWincc?n=" + n, true);
x.send();

Таким образом, запрос будет отправлен на прокси-сервер, который передаст его на нужный локальный сервер без ошибки CORS.