Bonjour, je rencontre un pb sur une source de données, qui se positionne à NEVER à chaque fois que je la configure. J’ai constaté que dans le navigateur la requête est bloquée par CORS (cross domain).
La source de données est un fichier JSON hébergé sur un ESP32 qui fonctionne parfaitement.
L’ESP32 dispose d’une interface web, et génère un fichier JSON à chaque lecture du capteur SQM (1min). Le SQM mesure la qualité et la transparence du ciel nocturne.
Ex ;
Chip : « TLS2591 »
Sqm: 11.76289028
{« Chip »:« TLS2591 »,« Sqm »:11.76289028}
Le tout est en réseau local sur un range IP 192.168.0.0/24. Avez vous une idée pour contourner le pb…
Dois je intégrer dans le code de l’ESP32 un entête particulier ? Que jusque là je ne connais pas
Merci de votre aide
Bonjour,
vous devez activer les CORS sur l’ESP32.
Si vous programmez en C++ et que vous utilisez la bibliothèque WebServer.h, ajoutez cette ligne dans la routine Setup puis recompilez :
J’utilise préférentiellement
ESPAsyncWebServer.h mais il y a une solution dans le code à appliquer avant de démarrer le server c’est d’ajouter le header suivant :
Portion de code arduino/ESP32 le fichier data.json est écrit en SPIFFS sur l’ESP32 (lib SPIFFS.h)
Cette portion est appelée lorsque l’on demande l’url : http://monip/data.json dans le navigateur
#include <ESPAsyncWebServer.h>
#include <SPIFFS.h>
AsyncWebServer server (80);
void setup()
{
server.on("/data.json", HTTP_GET , [](AsyncWebServerRequest *request)
{
request->send(SPIFFS, "/data.json","application/json");
});
//Header à ajouter pour CORS
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", "*");
//Header
server.begin();
}
void loop ()
{
etc ... etc ...
}
Votre solution « match » parfaitement avec la librairie que vous indiquez