Получение JSON с Arduino сервера. Проблемы с CORS

У меня есть ардуино сервер, который работает на IP 192.168.0.177. Если перейти по этому адресу, то он возвращает данные в JSON формате. Например, в React приложении я получаю этот JSON примерно так:

const [data, setData] = useState([])
axios.get('http://192.168.0.177')
  .then((res) => setData(res.data))
  .catch((err) => console.log(err))

В самом скетче ардуино часть кода такая:

client.println("HTTP/1.1 200 OK");
client.println("Access-Control-Allow-Origin: *");
client.println("Access-Control-Allow-Methods: GET");
client.println("Content-Type: application/json");
client.println("Connection: close");
client.println();

client.println("[");
client.println("{ \"id\": 1, \"name\": \"John\" }, ");
client.println("{ \"id\": 2, \"name\": \"Paul\" } ");
client.println("]");

Если запустить React приложение в локальной сети, то все работает прекрасно. У localhost'a http, а не https и он отправляет запрос на http сервер и поэтому все работает.

Проблема уже появилась тогда, когда я запустил свое React приложение в глобальной сети. То есть адрес примерно такой: https://app.com. Теперь если я через https отправляю запрос на ардуино, то в консоли пишет ошибку, что нельзя отправлять запрос с https на http. Тогда я в коде React'a изменил запрос, а точнее добавил только символ 's':

axios.get('https://192.168.0.177')
               ^

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

Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://192.168.0.177/. (Причина: не удалось выполнить запрос CORS).

Я прочитал все про CORS и везде пишут, что нужно к серверу добавить заголовок "Access-Control-Allow-Origin: *". Но он то все время был у меня в коде Arduino.

Простите, я не очень хорошо разбираюсь во всем этом, поэтому прошу помощи. Где я допустил ошибку?


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