O problema ocorreu devido a um bug recentemente descoberto no Chrome - e a outros navegadores WebKit (!) * - especificamente relacionado a %%30%30
, %0%30
ou %%300
como parte da URL, que internamente todos acabam representando o mesmo símbolo: null . Você pode ler mais sobre o bug aqui .
Não é um bug que afeta a maioria dos links, então você geralmente não precisa se preocupar em passar o mouse sobre links.
Notas:
* Outros navegadores WebKit incluem Safari, Opera, Navegador Steam, Midori, S60 (Symbian), navegador Blackberry e navegador do Playstation 3 - mas não Firefox, Internet Explorer ou Edge.
Editar: Este bug foi corrigido no Chrome 45.0.2454.101 como Deltik indica.
Mais sobre o que acontece
O problema está relacionado ao canonicalizer de URL , que é executado assim que você passa o mouse sobre um link - possivelmente para exibir o link na barra de status do navegador e para precuperando a página da Web para que seja carregada mais rapidamente depois de clicada.
Quanto ao papel do canonicalizador de URL:
Quando um URL é escrito em HTML
, pode ser escrito em um formulário como /home
ou ../../home
, mas os navegadores também precisam traduzir esse URL para algo com um protocolo e um domínio, como http://superuser.com/home
. Além disso, o URL pode conter URL Escapes que precisam ser traduzidos , e esses escapam são por cento codificados , como %%30%30
. (Uma lista mais exaustiva de URL escapa aqui ).
A funcionalidade que lida com essa tradução de URL é o que está acabando, porque recebe entrada que os desenvolvedores não esperavam / manipulavam.
Aqui está um resumo da alteração do código que resolveu o problema:
Correctly handle problematic nested escapes in URL paths.
Specifically, if unescaping in the input leads to the output URL containing a new escaped sequence, e.g. converting the input "%%30%30" to "%00", escape the leading '%' as "%25" to ensure the output sequence is not treated as a new valid escape sequence.
This ensures that canonicalizing the same URL a second time won't make changes to it, which is important for avoiding crashes and other bugs in a variety of places in both debug and release builds.