中止POST XHR可靠


Is aborting a POST XHR reliable?

使用PHP 5.4运行apache服务器。

我有一个表单,它向服务器发布一个xhr请求,如果在当前xhr完成之前再次按下按钮,则会中止以前的请求。

因此,如果我坐在那里,以尽可能快的速度(在大约100-150毫秒内)单击按钮,看到所有被取消的XHR都堆积在我的网络选项卡中,然后让最后一个请求真正完成,我会检查服务器,看到所有取消的请求都真正"完成"了他们在服务器上的任务(连接到数据库并将一些数据放入表中)。

也可能是相关的:在"工作"(插入数据库)之后发生的唯一事情就是将状态字符串发送回客户端。

我读到过,你不应该依靠取消HTTP请求来实际取消服务器进程,但这里有点可疑。

取消XHR请求是否可靠,或者我的服务器是否发生了问题?

XMLHttpRequest中止仅用于防止阻塞UI,但不会取消服务器请求。

那么答案是什么呢?这对服务器来说是不可靠的。

如果您计划一次阻止多个请求,您可以使用1)服务器端排队或2)在请求过程中简单禁用操作按钮(仅在请求完成时重命名按钮)。我认为后者更简单。

HTTP是一个无状态协议。当您从客户端中止POST时,它只是阻止客户端侦听响应,但POST已经发送到服务器。当服务器收到请求时,它不会坐视不理,等待另一个请求;它简单地执行与对给定资源的CCD_ 3请求相关联的动作。