2012-06-01 17 views
11

A może nazywasz to "ostrym" - symbolem #.Wiele znaków skrótu w adresie URL

Natrafiłem na jedną instancję, gdzie #! i # używane jednocześnie w jednym adresie URL. Czytając inne artykuły, w tym RFC, nie mogę zrozumieć, czy jest to kombinacja prawna, czy nie. Po napotkaniu takiej strony przeglądarka Mozilli (w tym przypadku Iceweasel) wyświetla adres URL jako 2 #, a Chrome wyświetla tylko jeden, ale wkrótce potem umiera (karta zawierająca stronę przestaje odpowiadać i ulega awarii - ale może nie być połączona) .

Moje pytanie brzmi: czy legalne jest posiadanie obu adresów w jednym adresie URL, czy jest to zgodne z prawem i zbędne (powinno być znormalizowane), czy jest to tylko błąd w przeglądarce Mozilli? Załóżmy więc, że robię żądanie AJAX, lub próbuję nawigować w historii przeglądarki - co powinienem zrobić, gdybym doświadczył tej sytuacji?

double hash in url

RFC-3986: http://tools.ietf.org/html/rfc3986#section-3.4, co powinno być wyjaśnienie to ... na wszelki wypadek.

Także: https://developers.google.com/webmasters/ajax-crawling/docs/specification jak roboty indeksujące Google widzą różne rzeczy.

Odpowiedz

10

Format fragmentu dopuszcza tylko ukośniki, znaki zapytania i pchar. Jeśli sprawdzasz RFC, zobaczysz, że znak krzyżyka nie jest prawidłowy pchar.

Jednak przeglądarek dołoży wszelkich starań, aby przeczytać non-poprawnych adresów traktując powtarzania mieszań tak, jakby uciekł, jak widać, sprawdzając wartość window.location.hash (w IE, Firefox i Chrome) dla

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

który jest taki sam window.location.hash dla

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

Nie, ABNF wyjaśnia, że ​​nie można uzyskać "#" bez fragmentu. –

+0

Ah, więc jest to tylko przypadek przeglądarki wymuszającej ważność poprzez traktowanie wielu skrótów tak, jakby były uniknięte. – apsillers

+0

@Julian edytowane w celu odróżnienia zachowania przeglądarki od RFC. – apsillers

2

może to być legalne jak @apsillers wymienione. Ale uniknęłbym tego, gdyby nie było to konieczne, ponieważ może to spowodować pewne zamieszanie dotyczące adresu URL.

Tego rodzaju URL:

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

wydaje się naprawdę mylące dla mnie i będzie jeszcze bardziej mylące dla zwykłych użytkowników, a może wyszukiwarek.

Powiązane problemy