Pouvez-vous définir ou supprimer de manière fiable un cookie lors du traitement côté serveur d'un appel Ajax (XHR)?

StackOverflow https://stackoverflow.com/questions/89579

Question

J'ai fait quelques essais moi-même (pendant le traitement côté serveur d'un gestionnaire de demandes DWR Framework Ajax pour être exact) et il semble que vous POUVEZ manipuler les cookies avec succès, mais cela va à l'encontre de ce que j'ai lu sur Ajax les meilleures pratiques et la manière dont les navigateurs interprètent la réponse d'un XmlHttpRequest. Remarque j'ai testé sur:

  • IE 6 et 7
  • Firefox 2 et 3
  • Safari

et dans tous les cas, les opérations de cookie standard sur l’objet HttpServletResponse au cours du traitement de la demande Ajax ont été correctement interprétées par le navigateur, mais je souhaiterais savoir s’il est préférable de pousser la manipulation du cookie côté client, ou si cela (beaucoup plus propre) la gestion des cookies côté serveur peut être approuvée.

Je souhaiterais des réponses à la fois spécifiques au framework DWR et à Ajax en général.

Était-ce utile?

La solution

XMLHttpRequest utilise toujours la structure de connexion du navigateur Web. Il est indispensable que les programmes AJAX fonctionnent correctement, car l'utilisateur serait déconnecté si l'objet XHR n'avait pas accès au pool de cookies du navigateur.

Il est théoriquement possible pour un navigateur Web de partager simplement des cookies de session sans utiliser la structure de connexion du navigateur, mais cela ne s’est jamais produit (à ma connaissance) dans la pratique. Même le plugin Flash utilise les connexions du navigateur Web.

Ainsi, le résultat final est qu’il est prudent de manipuler les cookies via AJAX. N'oubliez pas que l'appel AJAX pourrait ne jamais se produire. Ce ne sont pas des événements garantis, alors ne comptez pas sur eux.

Autres conseils

Dans le contexte de DWR, il se peut que ce ne soit pas "sûr".

D'après la lecture de le site DWR , il est indiqué:

  

Il est important de traiter la demande et la réponse HTTP en lecture seule. Bien que les en-têtes HTTP puissent passer par OK, il est probable que certains navigateurs les ignorent.

Selon moi, cela signifie que la définition de cookies ou d'attributs de requête est un no-no.
En disant cela, j’ai un code qui définit les attributs de requête (le code que j’ai écrit avant de lire cette page) et qui semble bien fonctionner (mis à part la suppression des cookies que j’ai mentionnés dans mon commentaire ci-dessus).

La manipulation des cookies côté client est plutôt le contraire de la "meilleure pratique". Et cela ne devrait pas être nécessaire non plus. Les cookies HttpOnly n'ont pas été introduits pour rien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top