258 votes

Une réponse AJAX peut-elle définir un cookie ?

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 ?

290voto

Strelok Points 18453

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.

240voto

this. __curious_geek Points 23728

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.

87voto

Gutza Points 1353

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).

6voto

Phil Points 11

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X