Corrige : valeur capteur toujours en chaîne (évite le figement de type QML), gestionnaire OPTIONS pour le preflight CORS du PATCH circuit

This commit is contained in:
2026-08-14 13:06:02 +02:00
parent 0a581316b7
commit 21df63ea72
+20 -2
View File
@@ -511,8 +511,11 @@ int main(int argc, char *argv[])
valeurConvertie = conversion_temperature(valeurBrute, uniteTemperature); valeurConvertie = conversion_temperature(valeurBrute, uniteTemperature);
symboleUnite = symbole_unite_temperature(uniteTemperature); symboleUnite = symbole_unite_temperature(uniteTemperature);
} }
// Arrondi à la précision d'affichage configurée (équivalent toFixed()) : // Toujours une chaîne (même pour les nombres) - évite que QML
obj["valeur"] = QString::number(valeurConvertie, 'f', precision).toDouble(); // ne fige le rôle 'valeur' en type numérique lors d'une famille
// visitée avant "Position" (latitude/longitude), qui tronquerait
// alors ces dernières à leur seul chiffre de tête.
obj["valeur"] = QString::number(valeurConvertie, 'f', precision);
obj["valeur_texte"] = false; obj["valeur_texte"] = false;
obj["unite"] = symboleUnite; obj["unite"] = symboleUnite;
} }
@@ -626,6 +629,21 @@ int main(int argc, char *argv[])
return withCors(QHttpServerResponse(QJsonDocument(reponse).toJson())); return withCors(QHttpServerResponse(QJsonDocument(reponse).toJson()));
}); });
// Réponse au "preflight" CORS (requête OPTIONS automatique du navigateur
// avant tout PATCH avec Content-Type: application/json) - sans elle, le
// navigateur abandonne silencieusement la vraie requête PATCH avant même
// de l'envoyer.
server.route("/elements/circuit/<arg>", QHttpServerRequest::Method::Options,
[](int) {
QHttpServerResponse resp(QHttpServerResponder::StatusCode::NoContent);
QHttpHeaders headers = resp.headers();
headers.append(QHttpHeaders::WellKnownHeader::AccessControlAllowOrigin, "*");
headers.append(QHttpHeaders::WellKnownHeader::AccessControlAllowMethods, "GET, PATCH, OPTIONS");
headers.append(QHttpHeaders::WellKnownHeader::AccessControlAllowHeaders, "Content-Type");
resp.setHeaders(std::move(headers));
return resp;
});
auto tcpServer = new QTcpServer(); auto tcpServer = new QTcpServer();
if (!tcpServer->listen(QHostAddress::Any, 8080) || !server.bind(tcpServer)) { if (!tcpServer->listen(QHostAddress::Any, 8080) || !server.bind(tcpServer)) {
qCritical() << "Impossible de démarrer le serveur HTTP sur le port 8080."; qCritical() << "Impossible de démarrer le serveur HTTP sur le port 8080.";