Сбой происходит из-за недавно обнаруженной ошибки в 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 Escape, которые необходимо перевести , и эти экранированные символы кодируются в процентах , например %%30%30
. (Более исчерпывающий список URL избегает здесь).
Функциональность, обрабатывающая этот перевод URL, является тем, что в конечном итоге приводит к сбою, потому что он получает ввод, который разработчики не ожидали / не обрабатывали.
Вот краткое описание изменения кода, которое решило проблему:
Правильно обрабатывать проблемные вложенные переходы в URL-путях.
В частности, если удаление из входных данных приводит к выходному URL-адресу, содержащему новую экранированную последовательность, например, преобразование входных данных «%% 30% 30» в «% 00», экранируйте ведущий «%» как «% 25», чтобы обеспечить вывод последовательность не рассматривается как новая допустимая escape-последовательность.
Это гарантирует, что канонизация одного и того же URL-адреса во второй раз не изменит его, что важно для предотвращения сбоев и других ошибок в различных местах как в отладочной, так и в выпускной сборках.