L'arresto anomalo è dovuto a un bug scoperto di recente in Chrome - e in altri browser WebKit (!) * - specificamente correlato a %%30%30
, %0%30
o %%300
come parte dell'URL, che internamente finisce per rappresentare lo stesso simbolo: null . Puoi leggere di più sul bug qui .
Non è un bug che interessa la maggior parte dei collegamenti, quindi in genere non devi preoccuparti di passare il mouse sopra i collegamenti.
Note:
* Altri browser WebKit includono Safari, Opera, Steam Browser, Midori, S60 (Symbian), Blackberry Browser e Playstation 3, ma non Firefox, Internet Explorer o Edge.
Modifica: questo bug è stato risolto in Chrome 45.0.2454.101 come sottolinea Deltik .
Maggiori informazioni su cosa succede
Il problema è correlato al canonicalizer dell'URL , che viene eseguito non appena si passa con il mouse su un collegamento, probabilmente per visualizzare il collegamento nella barra di stato del browser e per precaricare la pagina Web in modo che si carichi più velocemente dopo aver fatto clic.
Per quanto riguarda il ruolo del canonicalizer dell'URL:
quando un URL è scritto HTML
, può essere scritto in una forma come /home
o ../../home
, ma i browser devono tradurre questo URL in qualcosa con un protocollo e anche un dominio, come http://superuser.com/home
. Inoltre, l'URL può contenere URL Escapes che devono essere tradotti e questi escape sono codificati in percentuale , come %%30%30
. (Un elenco più esaustivo di URL fuoriesce qui ).
La funzionalità che gestisce questa traduzione di URL è ciò che sta per finire in crash, perché riceve input che gli sviluppatori non si aspettavano / gestiscono.
Ecco un riepilogo della modifica del codice che ha risolto il problema:
Gestire correttamente le fughe nidificate problematiche nei percorsi URL.
In particolare, se l'escaping nell'input porta all'URL di output contenente una nuova sequenza di escape, ad esempio convertendo l'input "%% 30% 30" in "% 00", evita il principale "%" come "% 25" per garantire l'output la sequenza non viene considerata come una nuova sequenza di escape valida.
Ciò garantisce che la canonicalizzazione dello stesso URL una seconda volta non apporti modifiche ad esso, il che è importante per evitare arresti anomali e altri bug in una varietà di posizioni sia in build di debug che di versioni.