При нажатии на эту ссылку ( http://a//%%30%30
) в Google Chrome, Chrome разрывает и закрывает все вкладки и экземпляры.
Но в некоторых случаях мне нужно только навести указатель мыши на ссылку, и вкладка вылетает.
Что произойдет, когда я наведусь на эту ссылку? Я имею в виду, что делает Chrome при наведении ссылки?
google-chrome
crash
LINQ
источник
источник
Ответы:
Сбой происходит из-за недавно обнаруженной ошибки в Chrome - и других браузерах WebKit (!) * - специально связанных либо с одним из них
%%30%30
,%0%30
либо%%300
с частью URL-адреса, которые внутри все представляют один и тот же символ: null . Вы можете прочитать больше об ошибке здесь .Это не ошибка, которая затрагивает большинство ссылок, поэтому вам не нужно беспокоиться о наведении курсора на ссылки.
Примечания:
* Другие браузеры WebKit включают Safari, Opera, Steam Browser, Midori, S60 (Symbian), Blackberry Browser и браузер Playstation 3, но не Firefox, Internet Explorer или Edge.
Редактировать: эта ошибка была исправлена в Chrome 45.0.2454.101, как указывает Дельтик .
Подробнее о том, что происходит
Проблема связана с каноническим URL-адресом , который запускается при наведении курсора мыши на ссылку - возможно, для отображения ссылки в строке состояния браузера и для предварительной выборки веб-страницы, чтобы она быстрее загружалась при нажатии.
Что касается роли канонизатора URL:
когда URL записан
HTML
, он может быть записан в такой форме, как/home
или../../home
, но браузеры должны преобразовать этот URL во что-то с протоколом и доменом, напримерhttp://superuser.com/home
. Кроме того, URL - адрес может содержать URL Escapes которые должны быть переведены , и эти побеги являются процента закодирован , как%%30%30
. (Более исчерпывающий список URL избегает здесь ).Функциональность, обрабатывающая этот перевод URL, является тем, что в конечном итоге приводит к сбою, потому что он получает ввод, который разработчики не ожидали / не обрабатывали.
Вот краткое описание изменения кода, которое решило проблему:
источник
URL canonicalizer
, что, очевидно, начинает работать, как только вы наводите указатель мыши на ссылку, возможно, для отображения ссылки в строке состояния браузера? Я не могу дать вам определенный ответ, однако, когда URL-адрес написан в формате HTML, он может быть записан в такой форме, как/home
или../../home
, но браузеры должны преобразовать этот URL-адрес во что-то с протоколом и доменом тоже, напримерhttp://superuser.com/home
, так может быть, функциональная обработка, которая в конечном итоге приводит к сбою, потому что она получает неожиданный ввод?Как говорит Фабио Турати,
Однако из вашего поста и комментария я думаю, что вас больше беспокоит вопрос о том, подключается ли Chrome к ссылке в фоновом режиме. Это так, как и другие современные браузеры ( Firefox , Opera ). Вы можете отключить предварительную выборку в настройках Chrome или установить uBlock Origin, чтобы получить больше настроек конфиденциальности.
источник
Я хотел дать некоторые дополнительные разъяснения о том, что именно здесь происходит.
По сути,% 30 - это URL-кодированный 0, а% 00 - это URL-кодированный NULL (который отображается в двоичном виде как 0000 0000). Поэтому, если у вас есть URL-адрес с вложенным закодированным символом, который будет декодирован в NULL, возникает ошибка.
Chrome выполняет следующие действия при канонизации URL-адреса (источник: https://code.google.com/p/chromium/issues/detail?id=533361#c13 ):
Таким образом, URL сначала считается действительным, но после удаления определенных личных данных он становится недействительным. Однако после удаления этих данных функция, вызвавшая этот конкретный код, ожидает действительный URL-адрес.
Частично причина, по которой этот URL-адрес считается недействительным, заключается в том, что NULL используется во многих старых программах и языках для обозначения конца строки (потому что это в основном 8 нулей в строке, что легко обнаружить для компьютера).
источник