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:
@@ -511,8 +511,11 @@ int main(int argc, char *argv[])
|
||||
valeurConvertie = conversion_temperature(valeurBrute, uniteTemperature);
|
||||
symboleUnite = symbole_unite_temperature(uniteTemperature);
|
||||
}
|
||||
// Arrondi à la précision d'affichage configurée (équivalent toFixed()) :
|
||||
obj["valeur"] = QString::number(valeurConvertie, 'f', precision).toDouble();
|
||||
// Toujours une chaîne (même pour les nombres) - évite que QML
|
||||
// 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["unite"] = symboleUnite;
|
||||
}
|
||||
@@ -626,6 +629,21 @@ int main(int argc, char *argv[])
|
||||
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();
|
||||
if (!tcpServer->listen(QHostAddress::Any, 8080) || !server.bind(tcpServer)) {
|
||||
qCritical() << "Impossible de démarrer le serveur HTTP sur le port 8080.";
|
||||
|
||||
Reference in New Issue
Block a user