2 votes

Écrire et lire des cookies dans différentes applications

J'ai deux applications fonctionnant dans Jboss, puis-je écrire un cookie dans une application et le lire dans une autre ?

Par exemple, si j'ai deux Servlets : - WriterCookieServlet sur localhost:8080/Application1 - ReaderCookieServlet sur localhost:8080/Application2

WriterCookieServlet :

 Cookie cookie = new Cookie("cookie", "cookieValue");
 response.addCookie(cookie);
 response.sendRedirect("localhost:8080/Application2");

Puis sur le ReaderCookieServlet je veux lire ce cookie.

2voto

mthmulders Points 4590

Je pense que @galuano1 a raison : cela devrait effectivement être possible. Assurez-vous que le chemin est correcte, cependant. Il est utilisé pour déterminer si un certain cookie est visible pour une application web.

De la Javadoc du Cookie :

Le cookie est visible par toutes les pages du répertoire que vous indiquez, ainsi que par toutes les pages des sous-répertoires de ce répertoire. Le chemin d'accès d'un cookie doit inclure la servlet qui a défini le cookie, par exemple, /catalogue ce qui rend le cookie visible pour tous les répertoires du serveur sous le nom de /catalogue .

Consultez la RFC 2109 (disponible sur Internet) pour plus d'informations sur la définition des noms de chemin pour les cookies.

Je dirais que vous devriez utiliser / pour le répertoire, puisque les deux applications auront un contexte Root différent.

2voto

ranjit Points 158

Tant que le domaine spécifié dans le cookie est le même (ici localhost), le cookie peut être lu par les deux applications différentes.

0voto

C'est vrai : le cookie peut théoriquement être lu par l'application s'il provient du même domaine. Cela signifie que l'application l'a à sa disposition, cela n'implique pas que l'application dispose des secrets nécessaires pour l'interpréter.

Le problème ici n'est peut-être pas lié à la partie théorique mais à la partie technologique : si le cookie n'est pas en texte clair (comme il devrait l'être), il doit être ouvert par l'application cible qui doit en lire le contenu.

Ce problème est généralement résolu si l'application qui a forgé le cookie est la même que celle qui doit le lire.
Mais s'il est forgé par une application 1 et doit être décrypté par une application 2, vous devez vous assurer que cette commande est utilisée :

Cookie cookie = new Cookie("cookie", "cookieValue");

n'utilise pas de secret spécifique à l'application pour crypter le cookie, sinon il ne pourra jamais être ouvert par une autre application.
Bien sûr, la réponse peut changer en fonction de la technologie que vous utilisez. Je ne connais pas le comportement de Java, mais je sais que de nombreuses technologies utilisent des secrets basés sur la machine pour pirater et signer le cookie.

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