Les Cookies de Session et IE 8

J'ai récemment construit une simple application web déployée sur Tomcat. L'application utilise assez standard basée sur la session de la sécurité, où un utilisateur qui s'est connecté en est donné à une session.

Sessions fonctionnent très bien sous Firefox et Chrome, mais nécessitent l'utilisation de jsessionid dans l'URL pour IE (testé 7 & 8), défini sur moyen de confidentialité. Dans IE 8, j'ai essayé de remplacer la gestion des cookies, paramètre "Permettre à tous les 3rd party cookies" et "accepter les cookies de session"- pas de dés. Cependant, lorsque je lance Tomcat sur ma machine locale, c'est à dire accepte les cookies et les sessions fonctionnent tout aussi bien.

Et maintenant, pour les en-têtes HTTP.

À partir de Chrome, un utilisateur connecté a une séance

GET http://devl:8080/testing/HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:14:40 GMT

GET http://devl:8080/testing/logout HTTP/1.1
Host: devl:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1036 Safari/532.5
Referer: http://devl:8080/testing/
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=9280023BCE2046F32B13C89130CBC397

...

De IE 8, avec une moyenne standard de niveau de sécurité et de confidentialité-

GET http://devl:8080/testing/HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: devl:8080
Connection: Keep-Alive

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
P3P: CP="NON CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT STA"
Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/testing
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 2450
Date: Fri, 26 Mar 2010 14:32:34 GMT

GET http://devl:8080/testing/logout HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://devl:8080/testing/;jsessionid=6371A83EFE39A46997544F9146AA5CEA
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; Tablet PC 2.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: devl:8080

...

J'ai pensé qu'il pourrait être la norme P3P, mais sur l'ajout d'un pacte politique, rien ne change. C'est la norme Tomcat session, donc je suis vraiment surpris, je n'ai pas été en mesure de trouver d'autres personnes ayant le même problème jusqu'à présent. Quelqu'un a des idées?

MODIFIER 4/3/2010 -

Désolé si je n'ai pas fait ce clair - j'ai essayé à partir de plusieurs autres instances de l'IE - co-travailleurs en bas de la salle, etc.

MODIFIER 4/3/2010 -

J'ai aussi essayé de retourner sur invitation pour tous les cookies, mais je ne suis pas d'obtenir une invite de commandes. Réglage du domaine de la "Set-Cookie" en-tête à l'aide de Fiddler ne pas faire une différence, que ce soit.

Pourrait le cookie besoin d'avoir le domaine? Je ne sais pas un moyen de le configurer Tomcat, mais peut-être que je pourrais jouer avec les en-tête de cookie avec un filtre...
Pourquoi le referer dans votre dernier IE8 GET inclure le jsessionid dans l'url? Et quel outil utilisez-vous pour capturer le trafic ci-dessus (cuz un navigateur n'enverrait jamais GET http://...)?
Une autre chose que j'ai remarqué de la IE8 trace HTTP: la première requête tente de définir un id de session "Set-Cookie: JSESSIONID=192999F922D6E9C868314452726764BA; Path=/essais ", mais la deuxième demande a un autre id de session dans "Referer: ...;jsessionid=6371A83EFE39A46997544F9146AA5CEA". Étaient là interventions entre les 2 demandes? Est-il plus d'infos sur pourquoi il pourrait y avoir deux id de session? À tout hasard il y a plusieurs fenêtres concernés?
Je suppose que c'est la façon dont Tomcat gère les sessions lorsque les cookies sont désactivés; je ne fais rien bancale je ne pense pas que... - la seule fois que je créer une nouvelle session est lorsque le client n'en a pas.
Tomcat revient à accepter ";JSESSIONID=..." ajouté à l'URL de propager les informations de session lorsque les cookies sont désactivés. Ce n'est pas un peu bizarre IE caprice (bien qu'il ne risque pas d'arriver si IE accepté mes cookies)- lorsqu'un cookie de session n'est pas fourni, les pages JSP inclure l'id dans la suite des Url.

OriginalL'auteur Matt Luongo | 2010-03-26