web-dev-qa-db-ja.com

chromeバージョン75.0.3770.80への更新(公式ビルド)(64ビット)後のリクエストの重複とデータベースの問題へのデータの2回の保存

昨日google chrome update to Version 75.0.3770.80 (Official Build) (64-bit)の後で奇妙な問題に直面しています。

私はLaravelを使用しています。Ajaxを使用してタスクを作成しようとすると、Googleから2回追加されますChromeのみですが、同じタスクをfirefoxまたは別のブラウザでは、単一のエントリで正常に機能します。この問題はchrome updateの後にのみ発生します。それ以外の場合は、以前は正常に機能していました。この新しいバージョンに影響を与える可能性のある変更はありますか?私の機能?

私は問題を分析しようとしましたが、chrome and firefox。globalTaskリクエストがchromeですが、サーバー側で正しく実行されていて、データベースにエントリを追加していると思います。問題の解決を手伝ってくれる人はいますか?

Chromeenter image description here

Firefoxenter image description here

コード

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

    }
});
9
Rakesh Sojitra

これがpreventDefaultに関連していることがわかったと思います... Chrome 75は、JSで作成された場合、フォームでpreventDefault()を実行しない場合、formPostを終了しますオリジナルイベント。

3
user984976

送信ボタンのタイプが「送信」または「ボタン」かどうかを確認します。 ajaxがフォームを送信する場合、htmlボタンのタイプは「ボタン」でなければなりません。そうでない場合、両方とも送信されます。これで問題は解決したと思います。

2
kkovacs

フォームの送信時にこの問題(2つのHTTP POST、そのうちの1つは「キャンセル」)も私たちのサイトで見ています。 ASP.NET MVC 5とJQuery 1.11およびBootstrap 3.0.3。

JQueryを最新バージョン(3.4.1)に更新すると、問題が解決しました。 Chromeのネットワークトレースを見るとChrome 74でイニシエーターは「その他」と言いますが、Chrome 75でリクエストの「その他」が表示され、2番目のリクエストには、JQueryのトリガー関数に移動するJScriptトレースが含まれます。

最初にこのコードスニペットをログインページに追加し、問題を修正しました。ネットワークトレースは単一のリクエストを示していますが、これは「その他」ではなく、イニシエーターとしての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バグレポート

1
Kyle Walker

Chrome拡張機能を確認してください。私の場合、新しいBit Torrent Webに付属している "Safe Torrent Scanner"拡張機能を無効にすると問題が解決しました。

0
Andre Crocci