2012-06-01 22 views
11

O tal vez lo llame "nítido" - el símbolo #.Múltiples signos hash en URL

He encontrado una instancia, donde #! y # usados ​​simultáneamente en una sola URL. Al leer otros artículos, incluido el RFC, no puedo entender si eso es una combinación legal o no. Al encontrar esa página, el navegador Mozilla (Iceweasel en este caso) muestra que la URL tiene 2 #, mientras que Chrome solo muestra una, pero muere poco después (la pestaña que contiene la página deja de responder y se cuelga, pero puede no estar conectada) .

Ahora, mi pregunta es, ¿es legal tener ambas en una URL, es tal vez legal y redundante (debe ser normalizada), o es solo un error en el navegador Mozilla? Entonces, supongamos que estoy haciendo una solicitud de AJAX o tratando de navegar por el historial del navegador, ¿qué debo hacer si encuentro esta situación?

double hash in url

RFC-3986: http://tools.ietf.org/html/rfc3986#section-3.4, que se debe aclarar que ... por si acaso.

También: https://developers.google.com/webmasters/ajax-crawling/docs/specification cómo los rastreadores de Google ven las cosas.

Respuesta

10

El formato de un fragmento solo admite barras, signos de interrogación y pchar s. Si busca el RFC, verá que la marca no es válida pchar.

Sin embargo, los navegadores hará todo lo posible para leer URL no válidos mediante el tratamiento de los hashes de repetición como si se escapan, como se puede ver mediante la comprobación del valor de window.location.hash (en IE, Firefox y Chrome) para

http://www.example.com/hey#foo#bar 

que es el mismo para window.location.hash

http://www.example.com/hey#foo%23bar 
+0

No, el ABNF deja bastante claro que no se puede tener un "#" sin guardar en el fragmento. –

+0

Ah, entonces este es solo un caso en el que el navegador fuerza la validez al tratar múltiples hashes como si hubieran sido escapados. – apsillers

+0

@Julian editado para distinguir el comportamiento del navegador del RFC. – apsillers

2

puede ser legal, @apsillers mencionados. Pero lo evitaría a menos que sea necesario, ya que puede causar cierta confusión con respecto a la url.

Ese tipo de url:

http://www.example.com/hey#foo#bar 

parece muy confuso para mí y será aún más confuso para los usuarios regulares y tal vez motores de búsqueda.

Cuestiones relacionadas