diff --git a/.current_version b/.current_version index 44723eb..e6d823b 100644 --- a/.current_version +++ b/.current_version @@ -1 +1 @@ -260930_081832 \ No newline at end of file +261006_091623 \ No newline at end of file diff --git a/_version.h b/_version.h index fa42154..47c9fe1 100644 --- a/_version.h +++ b/_version.h @@ -1,6 +1,6 @@ #ifndef _VERSION_H #define _VERSION_H -#define VERSION "260930_081832" +#define VERSION "261006_091623" #endif // _VERSION_H diff --git a/main.cpp b/main.cpp index aeb3aa5..b6d1837 100644 --- a/main.cpp +++ b/main.cpp @@ -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/", 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=&id=&periode=<0-3> diff --git a/main.cpp:Zone.Identifier b/main.cpp:Zone.Identifier index ae97c26..d6c1ec6 100644 Binary files a/main.cpp:Zone.Identifier and b/main.cpp:Zone.Identifier differ diff --git a/versions/shipheart_api_261006_091201 b/versions/shipheart_api_261006_091201 new file mode 100755 index 0000000..88b6b0d Binary files /dev/null and b/versions/shipheart_api_261006_091201 differ diff --git a/versions/shipheart_api_261006_091215 b/versions/shipheart_api_261006_091215 new file mode 100755 index 0000000..15fb585 Binary files /dev/null and b/versions/shipheart_api_261006_091215 differ diff --git a/versions/shipheart_api_261006_091539 b/versions/shipheart_api_261006_091539 new file mode 100755 index 0000000..d52f199 Binary files /dev/null and b/versions/shipheart_api_261006_091539 differ diff --git a/versions/shipheart_api_261006_091623 b/versions/shipheart_api_261006_091623 new file mode 100755 index 0000000..4df10f1 Binary files /dev/null and b/versions/shipheart_api_261006_091623 differ