Pourquoi IE / Fiddler voir les différents paramètres des cookies / suppression de Chrome et FF / en-têtes HTTP en direct?

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

Question

J'ai une application web en partie héritée en PHP et après farfouillé avec Fiddler j'ai un peu plus de données qu'auparavant. Le problème que je suis en train de résoudre est déconnexions indésirables sur IE6 / 8 mais pas FF / Chrome. Si un utilisateur clique entre les différentes pages, les cookies données de connexion disparaissent.

Le comportement est différent dans FF vs IE, et les informations communiquées est différente dans presque exactement de la même manière entre Fiddler (/ IE) et en-têtes HTTP en direct (/ FF).

Dans Firefox cookies semblent être traités comme le PHP spécifie: ils sont créés lorsque l'utilisateur se connecte à et chèques « Se souvenir de moi », et ils ne sont supprimés si l'utilisateur visite la page de fermeture de session, et ils ont deux semaines en date d'expiration. signaler en-têtes HTTP en direct rien d'autre: les cookies ne sont jamais signalés comme étant modifiés ou supprimés lorsque l'utilisateur clique entre les pages

.

Mais avec IE, ils disparaissent lorsque l'utilisateur clique entre les différentes pages, et les rapports Fiddler,

Cookies / Login
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com

( « supprimé » est littéralement cité de la sortie de Fiddler. Je n'ai pas dans mon code où soit valeur est définie sur une chaîne magique de « supprimé ».)

Non seulement IE et Firefox ont des interprétations différentes de la façon dont le site est dit, mais Fiddler et en-têtes HTTP en direct rapport en conséquence différentes versions de ce que fait le site.

Y at-il quelque chose de spécial IE et « supprimé »? Cela peut sembler étrange, mais ne veulent IE que les cookies soient réactivées à chaque affichage de la page ou quelque chose comme ça?

Et comment puis-je apaiser IE pour bénir les témoins en question ne pas supprimé par le serveur à moins que l'utilisateur le demande en visitant l'URL de fermeture de session?

Était-ce utile?

La solution

Qu'est-ce que j'ai finalement trouvé était la suivante: Firefox et IE ont été comportés différemment parce qu'ils soignaient la mise en cache différemment lorsqu'un document manquant était dans le 14 jours Expire: les en-têtes qui avaient été fixés

.

Firefox vérifiait apparemment une fois pour les données manquantes, et ne demande pas à nouveau.

IE, d'autre part, continué à vérifier un point une feuille de style a donné le mauvais chemin pour, a 404 pages et la page 404 a une invitation boilerplate pour se connecter qui a déclenché l'utilisateur étant déconnecté (peut-être pas le meilleur passe-partout). Je suppose que la feuille de style a été mis en mémoire cache, mais IE continué à demander des éléments qui ont été portés disparus.

Il a donc été mise en cache ainsi que l'inclusion indirecte des différences, plus 404 comportement de page.

Je ne sais toujours pas ce que « supprimé » est venu. (Est-ce que PHP fournir le mot « supprimé » si vous définissez une chaîne de cookie à une valeur vide?)

Autres conseils

IE ne sera pas mis un cookie si l'hôte a un trait de soulignement, mais ce n'est pas le problème ici.

Fiddler ne « inventent » anything-- si elle dit qu'il a un en-tête HTTP paramétrage du cookie à la valeur « supprimé », cela signifie que le serveur a envoyé la lettre que.

Vous pouvez jeter un oeil à si oui ou non vous avez des demandes errantes sortir sur le fil qui sont à l'origine du serveur pour supprimer les cookies. Par exemple, dans un autre thread, quelqu'un a noté qu'une balise IMG avec une source de « » (chaîne vide) causerait IE pour envoyer une demande à la racine du site, et leur page d'accueil supprimé les cookies connexion si visités.

IE6 / 7/8 ont actuellement une limite de 50 cookies par hôte, mais ce n'est pas ce que vous touchez ici non plus.

L'URL de la page en question ont un trait de soulignement en elle? Je me souviens IE avoir des problèmes avec les cookies de noms de domaine qui ne suivent pas la spécification du nom de domaine ( RFC 1035 section de contrôle 2.3.1).

Il y a aussi (où?) Une limitation dans IE en ce qui concerne la taille des cookies et le nombre de cookies par domaine. Dans IE6 Je crois que la limitation était de taille maximale de tous les cookies par domaine 4095 octets et 20 cookies par domaine.

Le problème pourrait se poser également si vous utilisez la redirection en fonction d'en-tête où IE pourrait perdre la trace du cookie.

BTW. la date que vous avez fourni dans les deux directives Set-Cookie sont-ils d'un ancien journal ou ne le serveur vraiment mis un cookie avec une date d'expiration dans le passé (ce qui est la façon habituelle de dire .. « hey navigateur supprimer ce cookie comme il y a déjà expirés jours ")

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