我怀疑 Chrome 在用户提交请求之前就发送了请求。这可能吗?

我怀疑 Chrome 在用户提交请求之前就发送了请求。这可能吗?

我一直在开发这个网站,我注意到 chrome 上有一个奇怪的行为。当我重新启动 tomcat 时,它会重新创建数据库(用于测试目的),因此,我创建了一个填充数据库的 URL。

问题是,有时当我还在输入这个 URL 时,我会检查 Tomcat 的访问日志,结果发现我未提交的请求不知怎么就自动提交了。服务器输出日志确认这个“幽灵请求”已发送。

如果我提交了我所输入的 URL,它会重复请求,然后我收到一个错误页面,因为数据库有一些限制,并且值重复了。

这种行为是否在任何地方以某种方式预期或记录下来(如果是,为什么它不一致?)?有人经历过类似的事情吗?

答案1

我不知道 chrome 是否会提前发出请求,但它可以,而且这应该不是问题。

HTTP GET 请求被视为幂等,这基本上意味着多次发出请求与仅发出一次请求没有什么不同。因此,如果 Chrome(或任何其他浏览器)想要尽早发出 GET 请求以尝试预加载页面,以便在用户实际按下 Enter 键时加载速度更快,那么这样做不应该有任何负面影响。

当使用 GET 请求时,填充数据库的脚本不应该对数据库执行任何操作,而应该等待 POST 请求。对于 GET 请求,只需让它输出一个带有提交按钮的表单,您可以单击该按钮,这将发出 POST 请求来填充数据库。

相关内容