2010-04-14 6 views
4

J'ai un bug étrange qui se produit dans IE7/XP et IE8/Vista sur mon site Web. IE envoie deux cookies nommés PHPSESSID.IE envoie plusieurs cookies avec le même nom?

Comment reproduire:

  1. Effacer les cookies dans IE (pas nécessaire si vous jamais visité unisender.com).

  2. unisender.com visite (exactement sans www reproduire!) Et il rediriger vers www.unisender.com

  3. Connectez-vous avec un nom d'utilisateur et mot de passe (je suis inscrit testmsdn nom d'utilisateur avec mot de passe testmsdn - ne hésitez pas à utiliser pour les tests)

  4. Lancez votre programme de capture-the-trafic favori (je préfère Wireshark)

  5. cliquez maintenant tout lien de menu (par exemple "messages")

  6. Regardez le trafic capturé - vous verrez que IE envoie un double cookie PHPSESSID (et vous êtes déconnecté après le clic pour cette raison). Il semble que le premier PHPSESSID soit de unisender.com et le second de www.unisender.com.

capturé échantillon:


GET/fr/letter_list HTTP/1.1

Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-demande , application/vnd.ms-XpsDocument, application/xml + xaml, application/x-ms-XBAP, application/x-shockwave-flash, /

Referer: http://www.unisender.com/en/intro

Accept-Language: ru

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4,0; Mozilla/4.0 (compatible, MSIE 6.0, Windows NT 5.1 et SV1); SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; FDM; .NET CLR 3.0.30729)

Accept-Encoding: gzip, deflate

Hôte: www.unisender.com

Connection: Keep-Alive

Cookie: authchallenge = 3a9cfcfc9fe33822e3e21d75c8a3d3e4; PHPSESSID = 14ea1cb133632951592397c86eaf037e; us_reg_ref = inconnu; us_reg_url = http% 3A% 2F% 2Funisender.com% 2F; __utma = 1.778517853.1271204400.1271204400.1271204400.1; __utmb = 1.3.10.1271204400; __utmc = 1; __utmz = 1.1271204400.1.1.utmcsr = (direct) | utmccn = (direct) | utmcmd = (aucun); PHPSESSID = 65e110aeb995a66b9dc8da5656c7a3da; last_login_name = testmsdn


J'ai essayé d'utiliser la session et les cookies non-session, essayé d'utiliser .unisender.com au lieu de unisender.com pour biscuit - rien aide. Je suppose qu'il ne devrait pas y avoir de cookies avec le même nom.

Ai-je raison? Est-ce un bug dans IE? Si c'est un bug, y a-t-il une solution?

Ou ai-je tort et c'est un comportement attendu?

Répondre

3

Il s'agit d'un cas particulier.

Vous ne devez pas envoyer de cookie pour la version "www-less" de votre site, ou les deux versions de votre site doivent définir l'attribut "domain = example.com" sur le cookie de session PHP. Dans le cas contraire, ces cookies ne sont pas réellement les mêmes, et par conséquent vous recevrez deux. http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

+0

Merci. Je ne suis pas sûr que ce soit une bonne décision de conception, mais maintenant c'est clair au moins. En passant, j'ai lu toute votre page "cookies interne" avant de poser cette question. Merci pour la page. Mais je ne vois pas le paragraphe correspondant à ma question. – user316603

+0

Dans la FAQ, c'est "Q3: Si je ne spécifie pas un attribut DOMAIN quand un cookie, IE l'envoie à tous les sous-domaines imbriqués de toute façon?" – EricLaw

Questions connexes