Apparemment au hasard, lorsque j'essaie d'accéder à une page Web (telle que/veut), une autre page Web (telle que/get) du même sous-domaine est chargée en réponse. Cela se produit depuis plusieurs mois sur un ensemble de sites Web que je développe, à la fois dans les versions localhost et de production. J'essayais de l'ignorer comme un hasard bizarre de Firefox, mais j'avais remarqué que la même chose se passait dans la nature sur l'ordinateur d'un autre utilisateur. Je crains maintenant que quoi que ce soit qui se passe ne rende ces sites Web inutilisables pour certaines personnes.
J'ai parcouru Internet en essayant de trouver un indice sur ce qui se passe ou même une description de ce qui se passe pour quelqu'un d'autre, et je suis arrivé vide. Je ne suis même pas sûr de savoir comment tester cela pour déterminer la cause fondamentale du problème ou pour éliminer la possibilité que quelque chose dans le code de mes sites CakePHP en soit la cause.
Un renifleur de réseau confirme que lorsque j'essaie de charger/je veux, il n'y a qu'une demande pour/obtenir en cours. Cependant, l'exécution d'une demande AJAX pour/veut dans Firebug montre ce qui suit:
GET http://example.com/want 301 Moved Permanently
Response Headers: Location: http://example.com/get
GET http://example.com/get
Donc Firefox a mis en cache une redirection 301, mais rien dans le code du site Web n’a actuellement ou jamais défini le statut à 301. Firefox semble décider au hasard de mettre en cache les redirections 301 par lui-même. Et aussi de façon incohérente, car parfois ces redirections changent sans que le site Web change ou que le cache de Firefox ne soit effacé.
Les gars, niveau avec moi. Firefox est juste hanté, hein?
Après avoir effacé le cache de Firefox, cela se reproduira-t-il à un moment donné?
Oui.
sur le même/veux URL? Ou toujours une URL différente/nouvelle?
Parfois les mêmes, parfois différents.
/ veulent et/get ne sont probablement pas liés?
Jusqu'à deux pages sur le même site Web peuvent être.
Vous ne naviguez pas par redirection, par opposition aux liens ordinaires?
Non, juste des liens ordinaires et coller l'URL/vouloir dans la barre d'adresse. La seule chose sur le site qui redirige jamais l'utilisateur vers/get n'est même pas dans/veut, c'est dans ...
Toutes les pages de connexion qui redirigent en cas de succès?
Huh. Eh bien, CakePHP envoie l'utilisateur à travers ces étapes ...
Par défaut, CakePHP redirige avec code 302 (trouvé/déplacé temporairement) , qui ne devrait pas être mis en cache.
Cependant , je suis à peu près sûr que tous les sites affectés utilisent le composant AutoLogin de plugin CakePHP Utility de milesj , qui - inclut une redirection permanente 301 en cas de connexion automatique réussie . Dans cette ligne, l'utilisateur est redirigé vers la variable 301 vers celle qui est non nulle, dans l'ordre:
Comme je n’ai jamais spécifié de page "redirection ici après la connexion", tout doit être automatique et envoyer les utilisateurs soit à la page à laquelle ils souhaitent accéder, soit à/après la connexion. La seule façon pour laquelle je peux imaginer ceci/vouloir ->/obtenir un comportement sortant du composant AutoLogin est de savoir si ...
En parcourant la base de code de CakePHP, cependant, je n'arrive pas à comprendre comment il gère les données du référent dans la session ni s'il est réellement possible qu'une requête hérite du référant d'une autre requête, ce qui est le seul moyen ce scénario semble être possible.
J'ai créé n problème sur la page GitHub du composant AutoLogin afin qu'une personne plus intelligente que moi puisse, espérons-le, m'aider à évaluer mes soupçons.
Il semble que ce problème soit causé par un problème (un seul caractère mal orthographié) avec plug-in CakePHP Utility de Milesj , qui a été corrigé .