Boucles de redirection

Y aurait-il moyen de les éviter avec des headers appropriés ?

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous (oui, pour une petite demi-heure…) !

Je viens vers vous pour me renseigner sur les causes des boucles de redirection au niveau des sites et pour tenter de trouver des solutions au niveau des éléments sur le serveur.

Dernièrement, j'ai repris en partie un site qui fonctionne sur de la réécriture d'URL pour en avoir de propres, et j'ai des redirections depuis mes scripts PHP selon diverses règles. Mais il semble que dans certains cas (relativement rares, du moins rarement signalés), il y ait des boucles de redirection. Je pense que c'est en partie lié au cache du navigateur (et plus particulièrement de Chrome, étrangement), mais c'est pas possible de dire aux utilisateurs et au client de nettoyer leur cache…
Et évidemment, quand ça arrive au client, impossible de savoir exactement comment il a fait, et le problème n'est pas reproductible. Le client me traite de con, je n'aime pas trop, mais le client s'en fout, il estime qu'il paie aussi le droit d'insulter son exécuteur, apparemment…

Bref, vu que très souvent purger complètement le cache ou passer en navigation privée permet de régler le souci, je me demandais si, en plus des traditionnels header('Location: …'), il n'existait pas des indications quelconques pour éviter ce genre de problèmes sans devoir tenter d'éduquer les internautes ?

J'ai vu passer les histoires de Cache-control et de Expire, mais je n'ai pas réussi à comprendre ce qu'il en était vraiment.

Est-ce que quelqu'un pourrait partager ses connaissances à propos des boucles de redirection et de moyens de les traquer/identifier/régler ?

Merci d'avance  :)

+0 -0

Salut,

Une boucle de redirection finit toujours par planter le serveur, il devrait y avoir des traces dans les logs du coup, non ?

Ou ce n'est que le navigateur qui finit par détecter la boucle et dire stop, ça suffit de tourner en rond comme des débiles ?

+0 -0

Disons qu'une pratique sympa c'est de mettre une entête de réponse du type Must-Revalidate dès qu'une modification de fond (nouvelles url, nouvelle architecture) ou de front (JS…) est opérée.

Ensuite, tu as les durées d'expiration du cache, mais là à part dire "il expire dans une seconde", je ne vois pas trop quoi faire.

Enfin, il existe, si mes souvenirs sont bons, une clause Cache-Control: No-Cache. Mais elle réduit fortement les perfs du site.

PS: encore une preuve que Chrome est l'IE6 de 2015

Un des cas que j'ai pu tracer est le suivant :

  • on arrive sur la page de connexion
  • on demande à réinitialiser son mot de passe
  • cela redirige vers une autre page
  • l'utilisateur donne un élément d'identification
  • le mot de passe temporaire est envoyé
  • on est redirigé sur la page de connexion

… et là c'est le drame et le client pousse des hauts cris.

Disons qu'une pratique sympa c'est de mettre une entête de réponse du type Must-Revalidate dès qu'une modification de fond (nouvelles url, nouvelle architecture) ou de front (JS…) est opérée.

artragis

Je vais voir ça, merci

Ensuite, tu as les durées d'expiration du cache, mais là à part dire "il expire dans une seconde", je ne vois pas trop quoi faire.

Enfin, il existe, si mes souvenirs sont bons, une clause Cache-Control: No-Cache. Mais elle réduit fortement les perfs du site.

artragis

Dans ces deux cas, je pensais aussi que c'était overkill, mais je ne connais pas assez pour pouvoir m'en assurer

PS: encore une preuve que Chrome est l'IE6 de 2015

artragis

C'est bien beau de le vendre comme "c'est nous le plus rapide et le plus léger", mais quand on remarque que le cache n'est vidé complètement que si aucun onglet n'est ouvert (donc forcer le rechargement sans cache ne fonctionne pas vraiment), j'avoue encore me demander pourquoi une large majorité de mes collègues développeurs travaillent avec, tout en pestant contre ces soucis de cache agressif.

+0 -0

C'est marrant ça, je l'utilise quotidiennement professionnellement et personnellement et je n'ai noté aucun problème de cache.

Zazou

Apparemment, tu sais comment l'utiliser et le régler en conséquence, contrairement à la majorité de ceux qui utilisent ce navigateur par effet de mode ;)

+0 -0

Hum non pourtant, je ne fais absolument rien de particulier. Je l'utilise comme un navigateur lambda, comme j'utiliserais firefox si son interface ne me rebutait pas…

Quels sont les problèmes liés à Chrome franchement ? Parce que dans le fond, je les ai peut-être aussi mais je ne les rencontre pas ou je ne m'en rends pas compte tout simplement.

Ben ce genre de soucis de redirection entre autres, qui arrive plus souvent avec Chrome qu'avec d'autres navigateurs de ce que j'ai pu constater (et si c'est pas lié au navigateur, on pourrait faire avancer le sujet), des CSS et des JS pas mis à jour qu'après une semaine (!), et parfois même en forçant avec Ctrl + F5 – il semble qu'avoir la barre de développement ouverte désactiverait totalement le cache, mais j'avais un collègue pour qui ça ne faisait absolument rien, il lui fallait absolument passer en navigation privée ou fermer Chrome et utiliser un programme du genre CCleaner parce que même purger le cache avec Ctrl + + Del et tout cocher ne réglait pas le problème, et ce sur toute une année.

J'y ai aussi eu droit quand j'ai tenté d'utiliser Chrome pour le développement, d'ailleurs.

+0 -0

Au lieu de lyncher Chrome, tu t'es renseigné sur le pourquoi de la boucle de redirection ?

Par exemple en regardant les cookies ou en examinant la session : si après déconnexion tu n'as pas accès à la page de connexion c'est qu'il doit y avoir des éléments qui bloquent.

Surtout que, de mémoire, le cache n'existe que sur le contenu des pages, pas les headers qui sont lus à chaque fois (même si, bon, des fois Chrome s'emmerde pas trop à le faire pour économiser un peu d'énergie — fainéant !).

Les sessions ne dépendent pas nécessairement de cookies (même si 99% du temps c'est vrai). ;)

C'est étrange que Chrome ne lise pas les headers, même pour limiter les accès au réseau. Y'a une anguille dans le potage…

Tu sais entre quelles pages la boucle se fait ? Et éventuellement quelles conditions provoquent les redirections ?

Tu sais entre quelles pages la boucle se fait ? Et éventuellement quelles conditions les provoquent ?

viki53

Un des cas que j'ai pu tracer est le suivant :

  • on arrive sur la page de connexion
  • on demande à réinitialiser son mot de passe
  • cela redirige vers une autre page
  • l'utilisateur donne un élément d'identification
  • le mot de passe temporaire est envoyé
  • on est redirigé sur la page de connexion

… et là c'est le drame et le client pousse des hauts cris.

Ymox

Quant aux conditions, c'est extrêmement difficile. Le client dit "Dém**dez-vous, ça doit marcher tout le temps" (parce qu'évidemment, ça ne le lui a fait qu'un jour et maintenant plus), et les utilisateurs, le client ne veut pas les recontacter pour le leur demander. Pour autant que le problème soit signalé… ce qui n'est arrivé qu'une fois à ma connaissance depuis qu'on travaille pour lui, ce qui fait depuis novembre 2014.

Donc en gros, on est dans un cas très particulier que nous n'arrivons pas à déceler.

Les sessions ne dépendent pas nécessairement de cookies (même si 99% du temps c'est vrai). ;)

viki53

Quels autres moyens y a-t-il, en plus de passer PHPSESSID dans l'URL ? Cette dernière méthode n'est pas utilisée sur le site, on a vérifié.

+0 -0

Quant aux conditions, c'est extrêmement difficile. Le client dit "Dém**dez-vous, ça doit marcher tout le temps" (parce qu'évidemment, ça ne le lui a fait qu'un jour et maintenant plus), et les utilisateurs, le client ne veut pas les recontacter pour le leur demander. Pour autant que e problème soit signalé… ce qui n'est arrivé qu'une fois à ma connaissance depuis qu'on travaille pour lui, ce qui fait depuis novembre 2014.

Donc en gros, on est dans un cas très particulier que nous n'arrivons pas à déceler.

Ymox

Super pratique. Du coup même pas sûr que ce soit lié au navigateur. Ni même au code. Ni même à quoi que ce soit. Si le cas est apparu qu'une fois et jamais reproduit, ça sent le bug fantôme ou le PEBKAC.

Les sessions ne dépendent pas nécessairement de cookies (même si 99% du temps c'est vrai). ;)

viki53

Quels autres moyens y a-t-il, en plus de passer PHPSESSID dans l'URL ? Cette dernière méthode n'est pas utilisée sur le site, on a vérifié.

Ymox

Bah c'en est déjà un, non ? ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte