Mise à jour pour passer du Poc à la version de prod

This commit is contained in:
2026-10-06 09:19:28 +02:00
parent 5bbf387aca
commit e4736f2469
8 changed files with 13 additions and 24 deletions
+1 -1
View File
@@ -1 +1 @@
260930_081832
261006_091623
+1 -1
View File
@@ -1,6 +1,6 @@
#ifndef _VERSION_H
#define _VERSION_H
#define VERSION "260930_081832"
#define VERSION "261006_091623"
#endif // _VERSION_H
+11 -22
View File
@@ -149,18 +149,19 @@ static QString chaine_longitude(double lon)
}
// ----------------------------------------------------------------------------
// Ajoute l'en-tête CORS à une réponse - indispensable puisque le client WASM
// (servi par nginx sur un port distinct) et cette API (port 8080) constituent
// deux origines différentes du point de vue du navigateur. Sans cet en-tête,
// les requêtes aboutissent bien côté serveur (visibles dans les logs) mais
// leur réponse est bloquée silencieusement côté client.
// TODO : restreindre à l'origine réelle du client en production plutôt que
// '*', une fois l'authentification (cf "Architecture cible") en place.
// En-têtes communs à toutes les réponses de l'API.
// NB (synthèse §49) : le nom "withCors" est historique. L'en-tête CORS
// "Access-Control-Allow-Origin: *" a été RETIRÉ : le client WASM appelle
// désormais l'API sous /api, sur la MÊME origine que la page (relais nginx du
// CM5, et Traefik avec vérification de la session Live à distance) - il n'y a
// plus de requête entre origines. Le conserver aurait permis à n'importe quel
// site ouvert dans le navigateur d'un utilisateur de lire les réponses de
// l'API. Les appels du VPS (archives) ne passent pas par un navigateur et ne
// sont pas concernés par CORS.
// ----------------------------------------------------------------------------
static QHttpServerResponse withCors(QHttpServerResponse &&resp)
{
QHttpHeaders headers = resp.headers();
headers.append(QHttpHeaders::WellKnownHeader::AccessControlAllowOrigin, "*");
// Empêche le navigateur de mettre en cache les réponses - sans ça, des
// requêtes identiques répétées (rafraîchissement périodique) pourraient
// recevoir une réponse mise en cache plutôt que la valeur réellement à
@@ -714,20 +715,8 @@ 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;
});
// NB : la route OPTIONS ("preflight" CORS, avant un PATCH venant d'une autre origine) a été retirée - plus de
// requête entre origines depuis que l'API est servie sous /api, sur l'origine de la page (synthèse §49).
// ------------------------------------------------------------------
// GET /mesures?type=<capteurs|reservoirs>&id=<id>&periode=<0-3>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.