Si un navigateur demande http://site.com/?q=abc
Un navigateur peut-il ignorer la sensibilité à la casse de l'en-tête de lieu lorsqu'il répond à une redirection?
et obtient une réponse de redirection 301
à l'emplacement http://site.com/?q=ABC
(note cas de querystring)
Est-il possible pour le navigateur d'ignorer la différence dans le cas et redemander http://site.com/?q=abc
, ce qui provoque une boucle de redirection infinie?
C'est le scénario qui semble se produire en fonction des journaux IIS. Il semble être isolé à Internet Explorer avec une certaine variation du Demander barre d'outils installé (basé sur les valeurs de l'agent utilisateur). J'ai même installé la barre d'outils Ask, mais je n'ai pas réussi à recréer ce scénario de quelque façon que ce soit.
Je ne peux pas poster le code source, mais pour ceux qui veulent quelque chose, voici la logique générale:
Page_Load(object sender, EventArgs e)
{
var q = Request.QueryString["q"];
if (q == "ABC")
{
//render page as usual
}
else
{
Response.RedirectPermanent("[thispage]?q=ABC");
}
}
Comme vous pouvez le voir, si cette page est demandée avec ?q=abc
il sera redirigé une fois, mais alors il va rendre comme d'habitude parce que la redirection va à ?q=ABC
.
Y at-il un scénario où le navigateur (en particulier IE avec la barre d'outils Ask) pourrait ignorer le cas de l'emplacement de redirection, provoquant une boucle sans fin?
Oui, le code devrait certainement être amélioré, mais c'est plus facile à dire qu'à faire. J'essaie juste de vérifier que j'ai correctement identifié la cause du problème. Merci! –