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