Der Absturz ist aufgrund eines kürzlich entdeckten Fehler in Chrome - und anderen WebKit - Browsern * - speziell auf entweder bezogen (!) %%30%30
, %0%30
Oder %%300
als Teil der URL, die intern alle am Ende , die das gleiche Symbol: null . Sie können mehr über den Bug lesen hier .
Es ist kein Fehler, der die meisten Links betrifft, sodass Sie sich im Allgemeinen nicht darum kümmern müssen, über Links zu schweben.
Hinweise:
* Andere WebKit-Browser sind Safari, Opera, Steam Browser, Midori, S60 (Symbian), Blackberry Browser und der Browser von Playstation 3 - jedoch nicht Firefox, Internet Explorer oder Edge.
Bearbeiten: Dieser Fehler wurde jetzt in Chrome 45.0.2454.101 behoben, wie Deltik hervorhebt .
Mehr darüber, was passiert
Das Problem hängt mit dem URL-Canonicalizer zusammen , der ausgeführt wird, sobald Sie den Mauszeiger über einen Link halten. Möglicherweise wird der Link in der Statusleiste des Browsers angezeigt und die Webseite wird vorab abgerufen, damit sie nach dem Klicken schneller geladen wird.
Was die Rolle des URL-Kanonisierers betrifft:
Wenn eine URL geschrieben ist HTML
, kann sie in einer Form wie /home
oder geschrieben sein ../../home
, aber Browser müssen diese URL in etwas mit einem Protokoll und einer Domäne wie übersetzen http://superuser.com/home
. Des Weiteren kann die URL enthalten URL Escapes , dass Bedarf werden übersetzt , und diese Fluchten sind Prozent codiert , wie %%30%30
. (Eine ausführlichere Liste von URLs wird hier nicht angezeigt. )
Die Funktionalität, die mit dieser URL-Übersetzung umgeht, führt zum Absturz, da sie Eingaben erhält, die die Entwickler nicht erwartet hatten.
Hier ist eine Zusammenfassung der Codeänderung, mit der das Problem behoben wurde:
Problematische geschachtelte Escapes in URL-Pfaden richtig behandeln.
Insbesondere wenn das Entkoppeln der Eingabe dazu führt, dass die Ausgabe-URL eine neue maskierte Sequenz enthält, z. B. das Umwandeln der Eingabe "%% 30% 30" in "% 00", maskieren Sie das führende "%" als "% 25", um die Ausgabe sicherzustellen sequence wird nicht als neue gültige Escape-Sequenz behandelt.
Auf diese Weise wird sichergestellt, dass durch das erneute Kanonisieren derselben URL keine Änderungen vorgenommen werden. Dies ist wichtig, um Abstürze und andere Fehler an verschiedenen Stellen sowohl in Debug- als auch in Release-Builds zu vermeiden.