Предотвращение предварительной загрузки Safari веб-страниц (на стороне сервера) - PullRequest
0 голосов
/ 07 апреля 2020

При вводе веб-ссылки в поле URL-адреса safari браузер пытается предварительно выбрать все ссылки, которые он видел ранее, как GET, так и POST.

Это приводит к активации каждой веб-ссылки, поддерживаемой сервером, которая указана в раскрывающемся списке как возможное завершение. Это проблематично c. Например, если веб-сайт имеет проверку подлинности с помощью ссылки / auth / logout для выхода из системы, это может привести к активации ссылки, если она появится в раскрывающемся списке и приведет к непреднамеренному выходу пользователя из системы.

Многие браузеры отправляют указанный заголовок c (например, 'Purpose: Prefetch' в chrome), который позволяет стороне сервера фильтровать запросы предварительной выборки / предварительной загрузки (например, возвращать 503), но Safari не ' Похоже, что отправляет любое отличительное поле заголовка. Также кажется, что он пытается предварительно выбрать POST-запросы, что мне кажется очень неэффективным. Запросы Get являются условно, по крайней мере, идемпотентными, но предполагается, что запросы POST понимают как изменение данных.

  1. Кто-нибудь получил решение для этого? Пожалуйста, не предполагайте, что функция предварительной загрузки браузера может быть отключена конечным пользователем - это не решение с точки зрения предоставления услуг.

  2. Кто-нибудь получил объяснение, почему браузеры делают это, а НЕ сигнализируют цель в поле заголовка? (Я понимаю, почему предварительная выборка полезна для Ux, но не почему она полезна при наборе URL-адресов, особенно для URL-адресов, уже загруженных ранее и, таким образом, способных возвращать метаданные предварительной выборки, которые позволят серверу выборочно отключать эту возможность, где это необходимо). Из того, что я могу скажем, такая функциональность начала появляться с включенными полями заголовка, но некоторые браузеры удалили эту подпись. Почему? Кажется, он ужасно сломлен.

спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...