Language agnostic 从同一浏览器同时向Internet服务器发出多个请求

Language agnostic 从同一浏览器同时向Internet服务器发出多个请求,language-agnostic,Language Agnostic,有时我想知道,当您多次提交表单,而internet服务器正在处理之前的请求时,会发生什么情况?在任何特殊情况下是否会导致任何问题 编辑客户端有问题吗?例如,当webserver在电子商务网站上发送两个响应时?人们意外地购买了多次,因为他们不耐烦,在等待(有时很慢)响应之前一直按提交按钮 在这种类型的应用程序中按下提交按钮后,最好禁用该按钮。每个表单提交都将单独处理,可能会并行处理多个表单提交。根据您的应用程序,这可能会或可能不会破坏服务器端的数据。如果HTTP连接断开,服务器端脚本可能会停止处理

有时我想知道,当您多次提交表单,而internet服务器正在处理之前的请求时,会发生什么情况?在任何特殊情况下是否会导致任何问题


编辑客户端有问题吗?例如,当webserver在电子商务网站上发送两个响应时?

人们意外地购买了多次,因为他们不耐烦,在等待(有时很慢)响应之前一直按提交按钮


在这种类型的应用程序中按下提交按钮后,最好禁用该按钮。

每个表单提交都将单独处理,可能会并行处理多个表单提交。根据您的应用程序,这可能会或可能不会破坏服务器端的数据。如果HTTP连接断开,服务器端脚本可能会停止处理(再次单击“提交”后,第一个请求将被取消,并发送一个新的请求)

为了避免多次提交时出现问题,例如,您可以将唯一ID与表单一起发送,该表单将在服务器上进行检查,并且只能使用一次。或者,您可以在用户会话中设置“已在处理”标志。或者,您可以使用作业队列并检查用户的作业是否已存在。具体细节将取决于您的应用程序

回复:“客户端有问题吗?例如,当Web服务器发送两个响应时?”


每当您的浏览器发送请求时,它都会与服务器建立连接,并在服务器上等待响应。新请求,新连接。当您第二次单击submit按钮时,第一个连接将断开,并建立一个新的连接(这也是服务器通常停止处理旧请求的点)。这就是为什么您可以同时在浏览器中加载同一站点的多个页面,这样就不会混淆哪个响应将进入哪个选项卡。

一个简单的解决方案,不需要线程之间仔细的同步或协调,就是协调事后发生的过于接近的操作。用户是否在相隔半秒的时间点击了两个广告?不太可能他们真的访问了第一个站点。用户是否每隔一分钟提交同一袋货物的两份订单?可能是个错误


只要你有办法识别相同的事件,甚至“来自同一个人”,你就可以使用这种技术。

禁用提交按钮不是一个非常可靠的解决方案,但这是你可以做的另一件事。