Не могу добавить заголовок '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) вообще ничего не отвечает ;(
Помогите разобраться какой заголовок куда отсылать. Всем спасибо заранее!