【发布时间】:2016-12-03 14:34:08
【问题描述】:
考虑这种情况:我有一个项目列表和分页来按块加载它们。在每个下一页单击新的 XHR 调用以获取新的项目部分。当用户点击得非常快时,我有很多 xhrs 实际上没有必要,因为用户只想要最后点击的页面项目并且他们也占用资源。所以我可以中止除最后一个未决请求之外的所有请求,为它们中的每一个调用 xhr.abort()。问题是:中止多个 xhr 是否安全?我读到服务器可能认为这是某种攻击。如果是这样,要与后端人员检查哪些设置?
注意:产生 xhrs 的函数已经去抖动了 400 毫秒。
【问题讨论】:
-
我个人会采取在当前有活动请求时忽略点击的方法,类似于在点击提交按钮时禁用提交按钮的过程。
-
或者如果你检测到一个新的请求就取消请求,或者取消调用,这样就不能快速进行多个。
-
点击时发生的功能被去抖,但我们的测试人员仍然设法每 200 毫秒同时点击一次,一旦去抖时间更改为 400 毫秒 - 每 410 毫秒一次,等等。仍然有很多请求
-
所以在返回最后一个之前不要打电话?
-
也许将请求保存在数组中,或者保存到带有时间戳的对象中,以便选择特定请求。就我个人而言,我只是在任何执行 xhr 的路由器调用中中止所有待处理的 xhr 请求,而且我还没有遇到任何问题。
标签: javascript security xmlhttprequest