L'accident est dû à un bug récemment découvert dans Chrome - et d' autres navigateurs WebKit * - spécifiquement liés soit (!) %%30%30
, %0%30
Ou %%300
dans le cadre de l'URL, qui en interne tous finissent représentant le même symbole: nulle . Vous pouvez en savoir plus sur le bogue ici .
Ce n'est pas un bug qui affecte la plupart des liens, vous n'avez donc généralement pas à vous soucier de survoler les liens.
Remarques:
* Les autres navigateurs WebKit incluent Safari, Opera, Navigateur Steam, Midori, S60 (Symbian), Blackberry Browser et le navigateur de Playstation 3 - mais pas Firefox, Internet Explorer ou Edge.
Edit: Ce bogue a été corrigé dans Chrome 45.0.2454.101, comme le fait remarquer Deltik .
Plus sur ce qui se passe
Le problème est lié au canoniseur d'URL , qui s'exécute dès que vous survolez un lien - éventuellement pour afficher le lien dans la barre d'état du navigateur et pour effectuer une pré - extraction de la page Web afin qu'elle soit plus rapide une fois cliquée.
En ce qui concerne le rôle du canoniseur d'URL:
quand une URL est écrite HTML
, elle peut être écrite sous une forme telle que /home
ou ../../home
, mais les navigateurs doivent la traduire en quelque chose avec un protocole et un domaine, comme http://superuser.com/home
. De plus, l'URL peut contenir des échappements d' URL qui doivent être traduits et ces échappements sont codés en pourcentage , comme %%30%30
. (Une liste plus exhaustive d'URL s'échappe ici ).
La fonctionnalité qui gère cette traduction d'URL est celle qui finit par planter, car elle reçoit les entrées que les développeurs n'avaient pas prévues / traitées.
Voici un résumé du changement de code qui a résolu le problème:
Traitez correctement les échappements imbriqués problématiques dans les chemins d’URL.
Plus précisément, si une sortie d'espace libre dans l'entrée conduit à l'URL de sortie contenant une nouvelle séquence d'échappement, par exemple en convertissant l'entrée "%% 30% 30" en "% 00", échappez le "%" initial en tant que "% 25" pour garantir la sortie. La séquence n'est pas traitée comme une nouvelle séquence d'échappement valide.
Cela garantit que la canonisation de la même URL une deuxième fois ne la modifiera pas, ce qui est important pour éviter les plantages et autres bogues à divers endroits dans les versions de débogage et de publication.