Не могу добавить заголовок 'Access-Control-Allow-Origin' в GET request для кроссдоменных запросов.JS код

Не получается отправить заголовок Get запроса из Arduino/ESP-01 на локальный сервер методом client.print(). В случае php file_get_contents(); все работает. При запросе в JavaScript ответ блокируется CORS.

Access to XMLHttpRequest at 'http://192.168.0.102/datasend?key=123' from origin 'http://192.168.0.101' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Есть два сервера в локальной сети(оба имеют веб-интерфейс). Сервер Arduino который принимает запросы и высылает данные в ответ и локальный-сервер-ноутбук который обрабатывает эти данные.

Проблема не возникало когда сервер передает запросы на свой веб-интерфейс. Код на сервере Arduino(нажатие кнопок обрабатываются js кодом, который посылает GET запрос на сервер):

function refreshDataStream() {
    let request = new XMLHttpRequest();
    request.open('GET', 'http://192.168.0.102/datastream?key=123', true);
    request.onload = function() {
          let data = JSON.parse(request.responseText);
          document.getElementById('ValueOfSensor_1').innerHTML = data.v2;
          document.getElementById('ValueOfSensor_2').innerHTML = data.v3;
            console.log(data);
    }
    request.send(null);
}

Код на стороне сервера, реагирует на обращение:

  HTTP.on("/datastream", DataStreamToHTTP); //При HTTP запросе вида http://192.168.4.1/datastream?key=123
  HTTP.on("/datasend", DataSendToHTTP);     //При HTTP запросе вида http://192.168.4.1/datasend?key=123
  HTTP.onNotFound([](){if(!handleFileRead(HTTP.uri())){handleNotFound();}});
  HTTP.begin();

Ответ который отправляет Arduino сервер:

void DataStreamToHTTP() {
    client.connect(IP_local, 80); //IPAddress IP_local(192, 168, 0, 101);
    client.print("GET /");
    client.println(" HTTP/1.1");
    client.print("Host:");
    client.println("192.168.0.101");
    client.println("Access-Control-Allow-Origin:*");
    client.println("Connection: close");
    Serial.println("send to local serv");
    client.flush();     // ждем отправки всех данных
    client.stop();
    //HTTP.send(200, F("text/html"), message);
}

Пытался добавить заголовок в headers Get - запроса. Не вышло: 1)При HTTP.send(200, F("text/html"), message); отправляет на локальный сервер это с ошибкой CORS:

    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 9
    Connection: close

2)При client.print (есть соединение с сервером:client.connect) вообще ничего не отвечает ;(

Помогите разобраться какой заголовок куда отсылать. Всем спасибо заранее!


Ответы (0 шт):