Une réponse AJAX peut-elle définir un cookie ? Si non, quelle est ma solution alternative ? Devrais-je le définir avec Javascript ou quelque chose de similaire ?
Réponses
Trop de publicités?Selon le w3 spec section 4.6.3 pour XMLHttpRequest un agent utilisateur doit respecter l'en-tête Set-Cookie. La réponse est donc oui, vous devriez pouvoir le faire.
Sí Si le serveur ne peut pas faire la différence entre une demande normale et une demande AJAX, vous pouvez définir le cookie dans la demande AJAX dans le code côté serveur comme vous le feriez pour une demande normale.
Les requêtes AJAX ne sont qu'une manière spéciale de demander au serveur, le serveur devra répondre comme dans toute requête HTTP. Dans la réponse à la demande, vous pouvez ajouter des cookies.
Pour mémoire, sachez que tout ce qui précède n'est (encore) vrai que si l'appel AJAX est effectué sur le même domaine. Si vous cherchez à définir des cookies sur un autre domaine en utilisant AJAX, vous ouvrez un tout autre chapitre. boîte de Pandore . La lecture des cookies inter-domaines fonctionne cependant (ou du moins le serveur les sert ; la question de savoir si l'UA de votre client permet à votre code d'y accéder est, là encore, un autre sujet ; depuis 2014, c'est le cas).
Vérifiez également que votre serveur ne configure pas de cookies sécurisés sur une requête non http. Je viens de découvrir que ma requête ajax recevait une session php avec le paramètre "secure". Comme je n'étais pas sur https, il ne renvoyait pas le cookie de session et ma session était réinitialisée à chaque requête ajax.