Mise à jour pour passer du Poc à la version de prod
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
||||
260930_081832
|
||||
261006_091623
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
#ifndef _VERSION_H
|
||||
#define _VERSION_H
|
||||
|
||||
#define VERSION "260930_081832"
|
||||
#define VERSION "261006_091623"
|
||||
|
||||
#endif // _VERSION_H
|
||||
|
||||
@@ -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.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user