javascript - 调用 AJAX 调用并让浏览器取消请求是否安全?

标签 javascript ajax jquery browser

如果我发出 AJAX 请求,它将显示在 Chrome 的网络选项卡中。如果我在同一时刻进行基于客户端的重定向,AJAX 请求将被取消。但是请求会到达服务器并正常执行吗? HTTP/TCP 中是否有某些内容知道客户端已取消请求?我不这么认为,但我想确定一下。

最佳答案

如果您正在运行 PHP 服务器端,它在客户端中止时停止处理。 (根据我的阅读,其他服务器端技术并非如此,它们会在客户端中止后继续处理。)请参阅:

http://php.net/manual/en/features.connection-handling.php

但是,最好不要以某种方式假设任何事情。浏览器可能取消请求。并且这种取消可能及时发生以停止服务器端的处理。但是,情况并非一定如此。客户端可以在请求期间的任何阶段取消——从请求实际发送之前到响应正文发送之后。另请记住,还有其他因素可能会中断服务器端请求处理(硬件、电源、操作系统故障等)。 预计会出现一些不可预测的情况。

据此,我提出两个建议:

  • 编写代码时应尽可能保证事务安全。如果请求对数据进行了更改,请在所有更改都通过管道传送到数据库之前不要提交这些更改。如果您的应用程序依赖多个 AJAX 请求来更改某些数据,则在“最终”AJAX 请求结束之前不要提交任何更改。

  • 即使请求完成,也不要假设客户端会收到响应。在我看来,这意味着如果您的应用程序大量使用 AJAX,请始终依赖客户端状态告诉服务器它有什么信息,而不是依赖服务器端状态来假设客户端“知道”某些信息。

关于javascript - 调用 AJAX 调用并让浏览器取消请求是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687415/

相关文章:

javascript - 将选择列表值分配给数组

javascript - 在 iframe 中填写其他网站上的输入文本表单

javascript - 如何找到页脚中 <script> 的来源?

javascript - Infragistics网络货币编辑四舍五入问题

jquery - 使用JQuery通过id选择器从外部文件获取html内容

javascript - 在第一张幻灯片上禁用 Prev 控件并在最后一张幻灯片上禁用 Next 控件

javascript - 使用 jQuery 显示警告

javascript - jQuery 验证与 Summernote 编辑器错误 : Cannot read property 'replace' of undefined

javascript - 如何让ajax显示表格列表而不点击文本字段

javascript - 附加新元素后功能不起作用