Подтвердить что ты не робот

Что делать с хром отправки дополнительных запросов?

Google chrome отправляет несколько запросов для извлечения страницы, а это - как-то не ошибка, а функция. И нам, как разработчикам, приходится иметь дело с этим.

Насколько я мог выкапывать через пять минут, хром делает это только для того, чтобы сделать серфинг быстрее, поэтому, если одно соединение потеряется, второе возьмет верх.

Я предполагаю, что если сайт хорошо развит, то его функциональность не нарушит этого, потому что несколько запросов просто не новы.

Но я просто не уверен, что я объяснил все ситуации, которые может создать эта функция.

Будут ли какие-то особые ситуации? Какие-либо рекомендации по их устранению?

Обновление 1: теперь я вижу, почему моя банковская страница вызывает ошибку, когда я открываю страницу с помощью хром! В нем говорится: "Только одно окно браузера должно быть открытым". Что их решение угроз безопасности?!!

4b9b3361

Ответ 1

Лучше всего следовать стандартным правилам веб-разработки: не изменяйте состояние приложения в результате вызова GET.

Если вы беспокоитесь, я рекомендую обновить модульные тесты уровня данных для дублирования вызовов GET и обеспечить их возврат тех же данных.

(Я не вижу такого поведения с Chrome 8.0.552.224, кстати, очень новичок?)

Ответ 2

Я видел подчиненное поведение при написании серверного приложения и обнаружил, что более ранние ответы, вероятно, не соответствуют действительности.

Chrome распределяет один запрос по нескольким http для параллельного извлечения ресурсов. В данном случае это изображение, которое он получает как отдельный http файл.

Я приложил снимок экрана захвата пакета через wireshark.

Он предназначен для простого запроса get на порт 8080, для которого сервер возвращает приветственное сообщение.

Chrome отправляет второй запрос на получение избранного значка, который вы видите в верхней части каждой открытой вкладки. Это НЕ секунда, чтобы удовлетворить тайм-аут или любую другую вещь.

Это следует считать еще одним элементом, который отличается в разных браузерах. Однако параллельное выполнение нескольких HTTP-запросов является обычным явлением в браузерах с 2018 года.

Вот справочный вопрос, который я нашел последним

Chrome отправляет два запроса ТАК

chrome requests favorite icon

Проблема с Chrome в коде Google

Ответ 3

Он также может быть вызван тегами link с пустыми атрибутами href, по крайней мере, в Chromium (v41). Например, каждая из следующих строк создаст дополнительный запрос на странице:

<link rel="shortcut icon" href="" />
<link rel="icon" type="image/x-icon" href="" />
<link rel="icon" type="image/png" href="" />

Швы, которые ищут пустые атрибуты на странице, являются хорошей отправной точкой: href или src.

Ответ 4

Мое наблюдение за этой характеристикой (ошибка/функция/безотносительно) возникает, когда я печатаю URL-адрес, и Autocomplete приземляется на совпадение, все еще печатая URL. Chrome принимает это соответствие и выбирает страницу, я предполагаю, что преимущества кэширования будут возникать при загрузке страницы самостоятельно....

Ответ 5

Это поведение может быть вызвано src= '' или src= '#' в IMG или (как в моем случае) тегом IFRAME. Замена "#" на "about: blank" устраняет проблему.

Здесь http://forums.mozillazine.org/viewtopic.php?f=7&t=1816755 говорят, что тегами SCRIPT могут быть проблемы.

Ответ 6

Я только что реализовал одноразовый маркер Guid (asp.net/TSQL), который генерируется, когда генерируется первая форма из серии из двух (+ страница подтверждения). Токен записывается как "ожидающий" в БД при его создании. Ток Guid сопровождает сообщения как скрытое поле и, наконец, помечается как закрытое, когда пользовательская операция завершена (оплата). Этот механизм действительно работает и предотвращает повторную отправку любых форм после оплаты. Тем не менее, я вижу 2 или 3 (!?) Дополнительные токены, генерируемые дополнительными запросами быстро один за другим. Первый запрос - это то, что заканчивается перед пользователем (localhost - так т.е., Я), где сгенерированный контент заканчивается для двух других запросов, о которых я не знаю. Сначала я задавался вопросом, почему обработчики page_Load стреляли несколько раз за одно показ страницы, поэтому я попробовал флаг в Http.Context.Current, но обнаружил, что последующие запросы поступают по одному и тому же URL-адресу, но не содержат никаких данных, и пустой Http.Context.Current массивы - то есть, полностью (для практических целей) отдельные HTTP-запросы. Как справиться с этим? Какой-то токен и логика, чтобы отказаться от последующих запросов контента на странице, пока первая все еще обрабатывается? Думаю, это может произойти как глобальный контекст?

Ответ 7

Это происходит, когда я включаю расширение "webug" (которое является заменой FirePHP на хром). Если я отключу расширение, сервер получит только один запрос.

Ответ 8

У меня была эта проблема, но ни одно из решений здесь не было проблемой. Для меня это было вызвано расширением APNG в Chrome (поддержка анимационных PNG). Как только я отключил это расширение, я больше не видел двойных запросов на изображения в браузере. Я должен отметить, что независимо от того, выводила ли страница PNG изображение, отключив это расширение, исправлена ​​проблема (например, APNG, похоже, вызывает проблему для изображений независимо от типа изображения, они не обязательно должны быть PNG).

У меня было много других расширений (например, "Веб-разработчик", о котором многие говорили, это проблема), и это не проблема. Отключение их не устранило проблему. Я также работаю в режиме разработчика, и это совсем не повлияло на меня.

Ответ 9

В моем случае Chrome (v65) сделал второй GET/favicon.ico, хотя ответ был text/plain поэтому явно нет <link ссылающейся на значок. Он прекратил это делать после того, как ответил 404.

Firefox (v59) отправил 2 запроса для favicon; снова он прекратил делать это после 404 года.

Ответ 10

Я просто хочу обновить это. Я столкнулся с той же проблемой, но в стиле CSS.

Я просмотрел все теги src, href, script, и ни у одного из них не было пустой строки. Оскорбительная запись была такой:

<div class="Picture" style="background-image: url('');">&nbsp;</div>

Убедитесь, что вы также проверите свои стили для пустой строки URL

Ответ 12

В моем случае у меня есть данные enpoint (json) для другого сервера, и браузер сначала сделает пустой запрос (метод запроса: ОПЦИИ), чтобы проверить, принимает ли конечная точка запросы с моего сервера, происхождения. Также goot знать - это приложение Angular 1. В заключение я делаю запросы с localhost на онлайн-фальшивые данные json.

Ответ 13

У меня был пустой tcp-пакет, отправленный Chrome на мой простой сервер перед обычным HTML-запросом GET и /favicon после. Favicon не был проблемой, но пустой tcp был, так как мой сервер ждал либо данных, либо соединения, которое будет установлено. У него не было данных, и он не установил соединение в течение 2 минут. Так что нить висела 2 минуты.

Jrummell Ссылка в комментарии к оригинальному сообщению помогла мне. В нем говорится, что пустые tcp-пакеты могут быть вызваны параметром "Предсказать действия сети для улучшения производительности загрузки страницы". Я попытался отключить настройки прогнозирования один за другим, и это сработало. В версии chrome 73.0.3683.86 (официальная сборка) (64-разрядная версия) это вызвано включенной настройкой chrome "Использовать службу прогнозирования для более быстрой загрузки страниц".

Таким образом, в chrome ~ 73 вы можете попробовать перейти к настройке → расширенный → конфиденциальность и безопасность → использовать службу прогнозирования для более быстрой загрузки страниц и выключения.

Ответ 14

Проверьте свои расширения Chrome. В моем случае проблема была исправлена, когда я отключил расширение "Safe Torrent Scanner", которое поставляется с новым Bit Torrent Web.