Pour une raison quelconque, mon navigateur (j'en ai essayé plusieurs) ne définit pas de cookies même si une réponse valide set-cookie est retournée par le serveur lorsque l'appel GET est effectué via Ajax en utilisant l'API fetch pour faire la demande
Si je fais l'appel GET identique en plaçant simplement l'URL dans le navigateur, les en-têtes de réponse (identiques) de cookie sont respectés par le navigateur et les cookies sont enregistrés.
J'ai inspecté les en-têtes de demande et de réponse via LiveHeaders et l'inspecteur de réseau Chrome et il n'y a aucune différence.
EDIT: Pour clarifier, ce n'est PAS un problème avec ajax qui envoie des cookies au serveur. C'est un problème où les cookies ne sont pas du tout enregistrés par le navigateur lorsqu'une réponse revient avec des en-têtes set-cookies valides (qui, selon la documentation, doivent être respectés, qu'ils soient ajax ou non).
Après beaucoup de coups, j'ai résolu ce problème en définissant la propriété "credentials" de la demande sur "include". J'avais l'impression que cela contrôlait uniquement l'envoi de cookies au serveur sur les demandes de récupération, mais apparemment, au moins dans la mise en œuvre que j'utilise, si elle n'est pas définie, cela signifie également que les cookies ne seront pas enregistrés s'ils sont renvoyés depuis le serveur.
De la spécification à https://fetch.spec.whatwg.org/
Une demande a un mode d'informations d'identification associé, qui est "omettre", "même origine" ou "inclure". Sauf indication contraire, c'est "omis".
Le mode d'informations d'identification de la demande contrôle le flux d'informations d'identification lors d'une extraction. Lorsque le mode de la demande est "naviguer", son mode d'informations d'identification est supposé être "inclure" et l'extraction ne prend actuellement pas en compte d'autres valeurs. Si HTML change ici, cette norme nécessitera des modifications correspondantes.
Les informations d'identification sont les cookies HTTP, les certificats clients TLS et les entrées d'authentification.