URL de hachage est persistant entre les redirections
Pour une raison quelconque, non IE navigateurs semblent persister une URL de hachage (si présent) quand une redirection côté serveur est envoyé (à l'aide de l'Emplacement de l'en-tête). Exemple:
//a simple redirect using Response.Redirect("http://www.yahoo.com");
Text.aspx
Si je visite:
Test.aspx#foo
Dans Firefox/Chrome, je suis prise à:
http://www.yahoo.com#foo
Quelqu'un peut-il expliquer pourquoi cela se produit? J'ai essayé avec diverses côté serveur redirige dans différentes plates-formes (de la part de tous la cause de l'Emplacement de l'en-tête, tout de même) et cela semble toujours se produire. Je ne vois nulle part dans la spécification HTTP, mais il semble vraiment être un problème avec les navigateurs eux-mêmes. Le hachage de l'URL (comme prévu) n'est jamais envoyé au serveur, le serveur de redirection n'est pas pollué par elle, les navigateurs sont juste persister pour une raison quelconque.
Des idées?
- Le même problème est abordé dans le Fragment d'URL et 302 redirige. Nice réponses.
Vous devez vous connecter pour publier un commentaire.
Je suggère que c'est le bon comportement. Le 302 et 307 codes d'état indiquent que la ressource est d'être trouvé ailleurs.
#bookmark
est un emplacement dans la ressource.Une fois que la ressource (document html) a été localisé, il est pour le navigateur pour localiser le
#bookmark
dans le document.L'analogie, c'est ceci: Vous voulez ressembler à quelque chose dans un livre, dans le chapitre 57, si vous allez à la bibliothèque pour obtenir le livre. Mais il y a une note sur le plateau en disant que le livre a déménagé, il est maintenant dans l'autre bâtiment. Si vous allez vers le nouvel emplacement. Vous voulez encore le chapitre 57 - il est sans importance où vous avez obtenu le livre.
Location
en-tête. Quelque chose commehttp://www.yahoo.com#
C'est un aspect qui n'était pas couvert par les précédents HTTP spécifications mais a été abordée dans les plus tard, HTTP développement:
De sorte que le fragment de l'original URI doivent également être utilisé pour la redirection URI, sauf si elle contient également un fragment.
Bien que ce n'était qu'un projet, qui a expiré en 2000, il semble que le comportement décrit ci-dessus est le standard de facto de comportement parmi d'aujourd'hui, les navigateurs web.
@Julien Reschke ou @Mark Nottingham probablement en savoir plus/mieux à ce sujet.
De ce que j'ai trouvé, il ne me semble pas clair ce que l'exacte le comportement devrait être. Il y a plently de personnes ayant des problèmes avec cela, certains d'entre eux veut garder le signet grâce à la redirection, certains d'entre eux veut se débarrasser de lui.
Différents navigateurs gérer cela différemment, de sorte que, dans la pratique, il n'est pas utile de s'appuyer sur le comportement.
Il est certainement un problème de navigateur. Le navigateur n'envoie jamais le signet partie de l'URL pour le serveur, donc il n'est rien que le serveur pourrait faire pour savoir si il y a un signet ou pas, et rien de ce qui pourrait être fait à ce sujet de manière fiable.