chrome 更新到版本 75.0.3770.80(官方构建)(64 位)后重复请求并将数据两次保存到数据库问题
Posted
技术标签:
【中文标题】chrome 更新到版本 75.0.3770.80(官方构建)(64 位)后重复请求并将数据两次保存到数据库问题【英文标题】:Duplicate requests after chrome update to Version 75.0.3770.80 (Official Build) (64-bit) and save data twice into database issue 【发布时间】:2019-10-22 15:05:12 【问题描述】:在昨天google chrome update to Version 75.0.3770.80 (Official Build) (64-bit)
之后,我遇到了一个奇怪的问题。
我正在使用 Laravel,如果我尝试使用 Ajax 创建任务,那么它只会从 Google Chrome 添加两次,但如果我在 Firefox 或另一个浏览器中创建相同的任务,那么它只需一个条目即可正常工作。我只有在 chrome 更新后才会遇到这个问题,否则之前它工作正常。这个新版本有什么变化会影响我的功能吗?
我试图分析这个问题,我发现下面的 chrome 和 firefox 图片中给出了以下差异。 globalTask
请求在 chrome 中显示一个已取消的请求,但我认为它在服务器端正确执行并在数据库中添加了一个条目。谁能帮我解决这个问题?
铬
火狐
代码
$.ajax(
url: "/globalTask",
type: "POST",
headers:
'X-CSRF-Token': 'hgdhgsddshjfs214dsf4s56f',
,
async: false,
data: data,
success: function (response)
);
【问题讨论】:
在我们的网站上遇到同样的事情......寻找解决方案。 如何在Ubuntu 18.04下回滚到旧版本的chromium techtuxwords.blogspot.com/2019/07/… 将作为评论而不是完整答案发布,因为这是更一般的情况 - 即使您的页面上没有任何表单也可能导致。这在某种程度上与您的 html 上的 空 HREF 链接 有关。为我解决了。见:***.com/a/29418950/5477548 【参考方案1】:我想我发现这与 preventDefault 相关...在我看来,如果您不对原始事件执行 preventDefault(),Chrome 75 正在终止通过 JS 制作的 formPost。
【讨论】:
【参考方案2】:检查提交按钮的类型是“提交”还是“按钮”。如果您的 ajax 正在提交表单,则 html 按钮的类型应为“按钮”,否则两者都提交。我认为这已经解决了我的问题。
【讨论】:
那么你基本上同意@user984976吗?【参考方案3】:我在我们的网站上的任何表单提交上也看到了这个问题(两个 HTTP POST,其中一个被“取消”)。我们将 ASP.NET MVC 5 与 JQuery 1.11 和 Bootstrap 3.0.3 一起使用。
将 JQuery 更新到最新版本 (3.4.1) 解决了我们的问题。查看 Chrome 74 中的 Chrome 网络跟踪,发起者会说“Other”,但在 Chrome 75 中,其中一个请求将显示“Other”,第二个请求将具有转到 JQuery 触发函数的 JScript 跟踪。
最初将此代码 sn-p 添加到我们的登录页面并解决了问题。网络跟踪显示单个请求,但它是作为发起者的 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 bug report
【讨论】:
【参考方案4】:检查您的 Chrome 扩展程序。就我而言,当我禁用新的 Bit Torrent Web 附带的“Safe Torrent Scanner”扩展时,问题得到了解决。
【讨论】:
以上是关于chrome 更新到版本 75.0.3770.80(官方构建)(64 位)后重复请求并将数据两次保存到数据库问题的主要内容,如果未能解决你的问题,请参考以下文章