Lorsque vous cliquez sur ce lien ( http://a//%%30%30
) dans Google Chrome, celui-ci rompt et ferme tous les onglets et toutes les instances.
Mais, dans certains cas, il suffit de survoler le lien et l’onglet se bloque.
Que se passe-t-il lorsque je survole ce lien? Je veux dire, que fait Chrome lorsqu'un lien est survolé?
google-chrome
crash
LINQ
la source
la source
Réponses:
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, commehttp://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:
la source
URL canonicalizer
, qui commence apparemment à fonctionner dès que vous survolez un lien, peut-être pour afficher le lien dans la barre d'état du navigateur? Je ne peux pas vous donner une réponse précise, mais quand une URL est écrite en HTML, elle peut être écrite sous une forme telle que/home
ou../../home
, mais les navigateurs doivent traduire cette URL en quelque chose avec un protocole et un domaine, commehttp://superuser.com/home
, etc. peut-être que la gestion des fonctionnalités est ce qui finit par planter, car elle reçoit des entrées inattendues?Comme le dit Fabio Turati,
Cependant, d'après votre commentaire et votre commentaire, je pense que vous êtes plus préoccupé par le fait que Chrome se connecte ou non au lien en arrière-plan. C'est le cas d' autres navigateurs modernes ( Firefox , Opera ). Vous souhaiterez peut-être désactiver le prélecture dans les préférences de Chrome ou installer uBlock Origin pour obtenir davantage de paramètres de confidentialité.
la source
Je voulais donner quelques précisions sur ce qui se passe exactement ici.
Fondamentalement,% 30 est un 0 codé en URL, et% 00 est un NULL codé en URL (affiché en binaire sous la forme 0000 0000). Donc, si vous avez une URL avec un caractère codé imbriqué qui décodera en NULL, le bogue se produit.
Chrome procède comme suit lors de la canonisation d'une URL (source: https://code.google.com/p/chromium/issues/detail?id=533361#c13 ):
Donc, l'URL est d'abord considéré comme valide, mais après la suppression de certaines données privées, il est invalidé. Cependant, une fois ces données supprimées, la fonction qui a appelé ce code particulier attend une URL valide.
Une partie de la raison pour laquelle cette URL est considérée comme non valide tient au fait que NULL est utilisé dans un certain nombre de logiciels et de langages plus anciens pour indiquer la fin d'une chaîne (car il s'agit essentiellement de 8 zéros dans une ligne, ce qui est facile à détecter pour un ordinateur).
la source