Повторяющиеся запросы после обновления Chrome до версии 75.0.3770.80 (официальная сборка) (64-разрядная версия) и сохранение данных дважды в проблему базы данных - PullRequest
7 голосов
/ 07 июня 2019

Я столкнулся со странной проблемой после google chrome update to Version 75.0.3770.80 (Official Build) (64-bit) вчера.

Я использую Laravel, и если я пытаюсь создать задачу с помощью Ajax, он добавляется дважды только из Google Chrome, но если я создаюта же задача в Firefox или в другом браузере, тогда он работает нормально с одной записью.Эта проблема, с которой я сталкиваюсь только после обновления Chrome, иначе она работала нормально раньше.Есть ли какие-либо изменения в этой новой версии, которые могут повлиять на мою функциональность?

Я попытался проанализировать проблему и обнаружил следующее различие, которое представлено на изображениях ниже для chrome и firefox.globalTask запрос, показывающий один отмененный запрос в chrome, но я думаю, что он выполняется правильно на стороне сервера и добавляет запись в базу данных.Может кто-нибудь помочь мне решить проблему?

Chrome enter image description here

Firefox enter image description here

Коды

$.ajax({
    url: "/globalTask",
    type: "POST",
    headers: {
        'X-CSRF-Token': 'hgdhgsddshjfs214dsf4s56f',
    },
    async: false,
    data: data,
    success: function (response) {

    }
});

Ответы [ 3 ]

2 голосов
/ 07 июня 2019

Мне кажется, я обнаружил, что это связано с protectDefault ... мне кажется, что Chrome 75 завершает formPost, если он сделан через JS, если вы не выполняете warnDefault () для исходного события.

1 голос
/ 09 июня 2019

проверьте, имеет ли кнопка отправки тип «отправить» или «кнопка».Если ваш ajax отправляет форму, то кнопка html должна иметь тип «кнопка», в противном случае отправляются оба.Я думаю, что это решило проблему для меня.

0 голосов
/ 11 июня 2019

Я также вижу эту проблему (два сообщения HTTP POST, один из которых «отменен») на нашем сайте при отправке любой формы.Мы используем ASP.NET MVC 5 с JQuery 1.11 и Bootstrap 3.0.3.

Обновление JQuery до последней версии (3.4.1) решило нашу проблему .Глядя на трассировку Chrome Network в Chrome 74, инициатор скажет «Другое», но затем в Chrome 75 один из запросов покажет «Другое», а второй будет иметь трассировку JScript, которая пошла в функцию триггера JQuery.

Первоначально этот фрагмент кода был добавлен на нашу страницу входа, и это устранило проблему.Трассировка сети показывает один запрос, но в качестве Инициатора использовалась трассировка стека JQuery, а не «Другой».Не уверен, как этот код «исправил» проблему, поэтому я бы не использовал его в качестве лейкопластыря.

// Chrome 75 is having double submit problems. This change stops that behavior, but may be an issue in JQuery 1.x
$(document).on('submit', 'form', function () {
   var button = $(this).find('input[type="submit"]');
   button.attr('disabled', 'disabled');
});

Похоже, что Google может исследовать проблему: Отчет об ошибке Chromium

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