Мы разрабатываем веб-приложение, которое обрабатывает изменение состояния посредством изменения хэша страницы (например, example.com/#/page1
).Хром: отключить предварительную визуализацию изменения хэша
В последнее время у меня возникла проблема с Google Chrome, когда включена опция предварительной выборки («Предсказывать сетевые действия для повышения производительности загрузки страницы»). Среди различных маршрутов у нас есть #/logout
, который выполняет выход из системы.
В «нормальном» состоянии я нахожусь на странице example.com/#/
(на главной странице), и после того, как я начинаю вводить «l» после этого (example.com/#/l
), автозаполнение Chrome выполняется с logout
. Однако он не только автозаполняет, но также вызывает событие «haschange», поэтому клиент отправляет запрос на выход на сервер ... Даже просто набрав l
!
Такое поведение не только неожиданно, но и опасно. Помимо снятия отметки «Предсказывать сетевые действия для повышения производительности загрузки страниц» на странице настроек (которая включена по умолчанию), есть ли способ предотвратить Chrome для этого?
EDIT
Небольшое новое "открытие". На самом деле Chrome не запускает событие «hashchange», поскольку console.log в обработчике событий не выполняется. Хром узнал, что при посещении страницы #/logout
запрос на сервер (GET /auth/destroy
) вызывается, и поэтому он запускает его сам по себе! Что мы можем сделать, чтобы остановить это?
Почему вы все еще используете события hashchange? Вы по-прежнему поддерживаете старые версии IE? – epascarello
@epascarello Не из-за поддержки IE, а по другим причинам, выходящим за рамки вопроса. GMail сам использует события hashchange, в конце концов. – Qualcuno
Очевидно, что включение HTTPS отключает предварительную выборку (на https://developers.google.com/chrome/whitepapers/prerender ). Однако было бы неплохо узнать, есть ли другие способы. – Qualcuno