Wenn http://a//%%30%30
in Google Chrome auf diesen Link ( ) geklickt wird, bricht Chrome alle Registerkarten und Instanzen ab und schließt sie.
Aber in einigen Fällen muss ich nur über den Link fahren, und der Tab stürzt ab.
Was passiert, wenn ich über diesen Link schwebe? Ich meine, was macht Chrome, wenn ein Link darüber schwebt?
google-chrome
crash
LINQ
quelle
quelle
Antworten:
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 übersetzenhttp://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:
quelle
URL canonicalizer
, der anscheinend startet, sobald Sie mit der Maus über einen Link fahren, möglicherweise, um den Link in der Statusleiste des Browsers anzuzeigen. Ich kann Ihnen keine bestimmte Antwort geben, aber wenn eine URL in HTML geschrieben ist, kann sie in einer Form wie/home
oder geschrieben sein../../home
, aber Browser müssen diese URL auch in etwas mit einem Protokoll und einer Domäne wiehttp://superuser.com/home
so übersetzen Vielleicht stürzt die Funktionsbehandlung ab, weil unerwartete Eingaben eingehen.Wie Fabio Turati sagt,
Aufgrund Ihres Posts und Kommentars sind Sie jedoch eher besorgt darüber, ob Chrome eine Verbindung zum Link im Hintergrund herstellt. Dies gilt auch für andere moderne Browser ( Firefox , Opera ). Sie können das Prefetching in den Chrome- Einstellungen deaktivieren oder uBlock Origin installieren , um weitere Datenschutzeinstellungen zu erhalten.
quelle
Ich wollte noch etwas näher erläutern, was genau hier passiert.
Grundsätzlich ist% 30 eine URL-codierte 0 und% 00 eine URL-codierte NULL (die binär als 0000 0000 angezeigt wird). Wenn Sie also eine URL mit einem verschachtelten codierten Zeichen haben, das zu NULL decodiert wird, tritt der Fehler auf.
Chrome führt beim Kanonisieren einer URL folgende Aktionen aus (Quelle: https://code.google.com/p/chromium/issues/detail?id=533361#c13 ):
Die URL wird zuerst als gültig betrachtet, aber nach dem Entfernen bestimmter privater Daten wird sie ungültig. Nachdem diese Daten entfernt wurden, erwartet die Funktion, die diesen bestimmten Code aufgerufen hat, eine gültige URL.
Ein Grund dafür, dass diese URL als ungültig angesehen wird, ist, dass in einer Reihe älterer Software und Sprachen NULL verwendet wird, um das Ende einer Zeichenfolge anzugeben (da es sich im Grunde um 8 Nullen in einer Zeile handelt, was für einen Computer leicht zu erkennen ist).
quelle