如果没有收到请求的响应,会发生什么情况?我看到重试

2024-04-21

我认为我遇到的问题可能更多是与浏览器相关的问题,但它是一个非常基本的问题,当我冒险构建一个 Web 应用程序时,我也想找到答案。

在我的客户端代码中我正在做一个$.ajax称呼。这篇文章可能需要一段时间才能回复。我看到的是在一段时间后再次发送请求。

我以为这是我的$.ajax再次调用发送,但是无论我在服务器上看到多少次POST请求,我都只看到beforeSend回调调用一次。我相当确定我的代码不会多次发送它,所以我认为它是浏览器重试?

我知道当我运行 Wireshark 时,我的服务器多次收到请求,并且可以多次看到发布请求。所以我的假设是这与 HTTP 有关吗?即,如果在一定时间内未收到响应,则重新发送请求?

下面是我的通话示例。

$.ajax({
                    async: false,
                    type: 'POST',
                    url: '<%= url_for('importDevice') %>',
                    data: { device: val },
                    retryLimit: 0,
                    //callback
                    success: function(data) {
                    alert('calling import');
                    if ( data == 'nomaster')
                    {
                            // Display a warning  toast, with a title
                            toastr.warning('You must set the Master Key first!', 'Warning');
                            $.ismasterset = false;
                            //reset the form contents after added
                    } else
                    {
                            $("div#content").html(data);
                    }
                    },
                     beforeSend: function(){
                    alert('in before send');
                    }
            });

这是所有相关代码,“retryLimit”没有被使用,我只是没有从我的代码中删除它,是的,在我放入它之前问题就存在了。

编辑了客户端和服务器的输出。

好的,我安装了“Live Http headers for Firefox”。

在“生成器”选项卡中,我看到一个调用

'#request# POST http://testhost/importdevice' 

我没有看到POST但在“标题”部分,也许那是因为没有响应?

在我的网络服务器中,我看到 2 个调用间隔大约 22 秒。

[Sun Jan 13 03:08:45 2013] [debug] POST /importdevice (Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20100101 Firefox/17.0).

[Sun Jan 13 03:09:07 2013] [debug] POST /importdevice (Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20100101 Firefox/17.0).

我也可以在wireshark中看到这些相同的调用...

这就是为什么我问如果没有返回响应,尝试重新发送请求是否是正常行为,类似于 TCP 握手和SYN重传。

新更新

这似乎与我的 Ajax 调用没有任何关系。如果我创建一个带有简单 HREF 的按钮。

i.e

<a href="/importdevice?device=serverA" class="btn btn-success">TestDirect</a>

然后,在我的“实时 HTTP 标头输出”中,我得到...只是一个实例。

#request# GET http://172.16.118.15/importdevice?device=serverA

但我再次在我的服务器日志中得到。

[Sun Jan 13 03:20:25 2013] [debug] GET /importdevice (Mozilla/5.0 (Macintosh; Intel Mac OS  X 10.8; rv:17.0) Gecko/20100101 Firefox/17.0).
[Sun Jan 13 03:20:48 2013] [debug] GET /importdevice (Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20100101 Firefox/17.0).

在服务器上的wireshark中,我也看到它两次...并且正如预期的那样,我的服务器代码也被调用了两次...这对我来说真的很困惑。


查看这篇博客文章,其中解释了正在发生的事情:http://geek.starbean.net/?p=393 http://geek.starbean.net/?p=393

根据HTTP/1.1 RFC 8.2.4 https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4:

如果 HTTP/1.1 客户端发送的请求包含请求正文,但不包含带有“100-Continue”期望的 Expect 请求标头字段,并且客户端未直接连接到 HTTP/1.1 源服务器,如果客户端在收到来自服务器的任何状态之前看到连接关闭,则客户端应该重试该请求。

确保您设计的网络应用程序能够容忍这些额外的请求。如果您希望 ajax 请求只执行一次某些操作,例如向数据库写入某些内容,那么您需要将请求设计为幂等的。看:什么是幂等操作? https://stackoverflow.com/questions/1077412/what-is-an-idempotent-operation

此外,这还突出了 GET 和 POST 操作之间的差异:http://www.cs.tut.fi/~jkorpela/forms/methods.html http://www.cs.tut.fi/~jkorpela/forms/methods.html

作为一般设计实践:
-GET操作应设计为幂等的
-POST 操作应用于写入数据库等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果没有收到请求的响应,会发生什么情况?我看到重试 的相关文章

  • 使用 CSS 格式化日期/时间或百分比值?

    有没有办法使用 CSS 来使用特定格式格式化日期 例如YYYY MM DD 或 MM DD YYYY 有或没有时间 也可以将数字格式化为保留 2 位小数的百分比值 例如5 4321987 显示为 5 43 我可能可以使用 JavaScrip
  • 按下按钮时如何更改 Twitter Bootstrap 选项卡?

    我需要在按下按钮时更改选项卡 并且选项卡应由 id 标识 以下代码对我不起作用 只是重新加载页面 div class form actions div
  • jQuery 在 taphold 事件后调用 click 事件

    我正在使用 Jquery 和 Jquery Mobile 开发适用于 Android 的 PhoneGap 应用程序 我有一个项目列表 需要将两个事件绑定到列表中的每个项目 我需要一个 taphold 事件和一个 click 事件 我遇到的
  • 如何创建适用于 iPhone、iPad 和 Android 的 Extjs 应用程序?

    有人成功创建了适用于 iPhone iPad 和 Android 的 Extjs 应用程序吗 我知道 Sencha 不支持移动设备上的 Extjs 但我不想创建另一个仅针对移动设备的网站 我不需要奇特的移动界面 只需要基本的功能 我做了一些
  • 使用 jquery 迭代 json 数组

    已经有一些帖子和我遇到了类似的问题 如何使用 PHP 中的 jQuery AJAX 调用迭代 JSON 数组 https stackoverflow com questions 6472338 how do i iterate over a
  • 在网页上写乐谱[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在网页中编写乐谱和和弦 有没有可用的库 例如用于数学的 Mathjax 如果没有 那么还有其
  • javascript - 动态变量

    您好 我正在尝试创建动态变量 但它说 变量 v0 到 v5 未定义 td each function i eval var v i this html 任何帮助将不胜感激 这听起来是个坏主意 你有什么理由不能这样做吗 var tdHtml
  • Video.js - 阻止点击播放功能

    我正在使用 video js 将视频嵌入到 HTML 页面中 它将用作仅适用于 ipad 的 Web 应用程序 因此我相信它使用的是本机 HTML5 播放器 我正在尝试禁用点击播放功能 以便用户必须使用控件 但我在这样做时遇到了麻烦 我尝试
  • 有什么特别好的理由在 javascript 目标链接上继续使用 href='#' 吗?

    众所周知 像这样的代码是非常常见的 a href class edit Edit a 然后将其连接到事件处理程序 使用 jQuery 或当今流行的任何东西 甚至使用内联 js 处理程序 a href Edit a 我知道这是在链接上显示指针
  • 在 JavaScript 中引用 C# 变量

    我已经阅读了很多线程 但我不明白为什么这不起作用 我正在创建一个将用作导航栏的 SharePoint Web 部件 一切都很顺利 直到我尝试在 JS 代码中引用 C 变量 这是来自 VisualWebPart1UserControl asc
  • Liferay ajax 请求和 JSON 响应

    我是 Liferay 的新人 我使用服务生成器来创建数据库 我手动填充它们 最终我可以使用 JSP 调用它们PersonLocalServiceUtil class 现在我想在我的程序中使用Ajax 例如 有属性的人personID per
  • Twitter bootstrap 远程模式每次都显示相同的内容

    我正在使用 Twitter bootstrap 我已经指定了一个模式 div class modal hide div class modal header div div
  • 如何像在浏览器中一样检索准确的 HTML

    我正在使用 Python 脚本来呈现网页并检索其 HTML 它适用于大多数页面 但对于其中一些页面 检索到的 HTML 不完整 我不太明白为什么 这是我用来废弃此页面的脚本 由于某种原因 每个产品的链接不在 HTML 中 Link http
  • XMLHttpRequest、jQuery.ajax、jQuery.post、jQuery.get 之间有什么区别

    我如何找出最适合某种情况的方法 有人可以提供一些例子来了解功能和性能方面的差异吗 XMLHttpRequest是原始浏览器对象 jQuery 将其包装成更可用和简化的形式以及跨浏览器一致的功能 jQuery ajax是 jQuery 中的通
  • 如何保存包含框架/iframe 的完整 html 页面?

    在网页抓取期间 我想将当前页面的 html 保存到文件中以供以后调试 browser html在大多数情况下有帮助 但是当页面包含 iframe frame 时 它 的内容不会返回browser html 我必须用类似的东西单独得到它bro
  • 尝试在本地主机上测试我的 php 文件,但只出现一个空白页面,没有错误消息

    我正在运行 Apache 和 mySQL 因为我检查了所有日志 似乎没有任何错误 我的目标是每当有新的表单条目时就向特定地址发送电子邮件 我对后端和 PHP 缺乏经验 所以我不太确定哪里出了问题 任何帮助将不胜感激
  • AJAX Rails 验证

    我的表单和验证可以很好地处理常规的 http 请求 我希望它使用 AJAX 我知道我可以在客户端进行验证 但这似乎是多余的 因为我已经在模型中定义了验证 当用户填写表单时 我想就他们的条目向他们提供反馈 在 AJAX 表单中使用 Rails
  • 如何消除 jQuery Mobile 中的悬停延迟?

    我正在使用 jQuery Mobile 制作一个网站 当我将鼠标悬停在按钮上时 它会更改其类 并扩展其颜色 但感觉需要半秒左右才能完成 有没有办法减少这种延迟 您可以覆盖hoverDelay无需修改 jQuery Mobile js 库 要
  • JQuery 屏蔽输入插件不起作用

    我已将 JQuery Masked 输入插件添加到我的 Web 项目中 但它根本不起作用 该插件可以在这里找到 http digitalbush com projects masked input plugin http digitalbu
  • 如果列表在初始化之前为空,则 jQuery 可排序无法与水平列表正常工作

    如果我在初始化后将元素添加到列表中 sortable它无法正常工作 参见示例jsFiddle http jsfiddle net NQMPr 1 示例 HTML div class container div br

随机推荐

  • python - 使用selenium在页面上查找电子邮件地址

    我正在尝试从网站获取电子邮件地址列表 并且非常接近 我的代码如下所示 我收到以下错误 发生的情况是 有一个链接页面 然后单击该链接 在下一页中有一个电子邮件地址 单击链接后 我试图打印每个页面内的电子邮件地址 这是链接点击进入的页面示例 h
  • 如何取消或停止客户端的推送通知?

    我有一个向客户端发送推送通知的网络服务器 客户端可以拦截推送通知UNNotificationServiceExtension在 iOS 10 上并更改内容 现在我想取消在某些通知上在客户端显示的推送通知 我怎么做 我尝试做 self con
  • 两个连续 KeyDown 事件之间的延迟较长

    我正在编写一个小游戏引擎 纯粹是为了从内部了解它们是如何工作的 我目前不想搞乱 OpenGL 或 DirectX 所以我坚持使用 GDI 和所有 WinForms 东西在控件上绘图 显然 我需要处理输入 更具体地说 是键盘事件 然而 这带来
  • WIX 合并 C++ 运行时

    我已经合并了 msm 与 2015 crt
  • Scikit - 如何定义绘制 roc 曲线的阈值

    我有一个增强树模型以及测试数据集的概率和分类 我正在尝试绘制相同的 roc curve 但我无法弄清楚如何在 scikit learn 中定义 roc 曲线的阈值 alpha from sklearn metrics import prec
  • rxjs:定期执行一些操作,中间有特定的延迟

    客户端应用程序向服务器发送请求 这可能需要很长时间才能完成 一旦请求完成或失败 客户端应该等待一段时间 即10秒 然后再次发送请求 目前的工作解决方案是这样的 appRequest new Subject ngOnInit void thi
  • 在状态更改时从 asp.net 的验证器获取事件到 jquery

    如果我的页面的验证器更改其状态 我希望在 jquery 中触发一个事件 这是我的用例 在地址表单中 验证器全部被隐藏 如果我提交表格 就会显示出来 现在我想触发一个 jQuery 函数 它用红色边框渲染所有行 不是输入字段 而是它们的父行
  • 使用 TypeScript、Jest 和 Enzyme 进行 React 单元测试:无法调用可能“未定义”的对象

    我正在使用 TypeScript 构建一个 React Native 应用程序 我正在使用 Jest 和 Enzyme 进行组件测试 我也在使用 React 导航 在我的最后一个问题中 https stackoverflow com que
  • 如何从 Chrome 扩展程序填写网页表单中的文本字段?

    到目前为止 我已经有了一个扩展程序 列出了用户所在的网页和一个按钮 单击该按钮后 应在文本字段中填写 testing123 在我正在测试的网页上 表单有一个 id 和名称 form 文本字段有一个 id 和名称 body 如果我能在填写此文
  • py.test 无法导入我的模块

    我正在努力正确导入 python 我想要实现的是拥有一个包含多个源文件的模块和一个包含单元测试的测试文件夹 无论我做什么 我都无法让 py test 3 执行我的测试 我的目录布局如下所示 module init py testclass
  • 上传成功后显示上传的图片

    我正在 Magnific Popup 灯箱 内使用 Carrierwave gem 我想做的是after上传图片 它将显示新上传的图片 目前 从灯箱上传图像后 它将继续显示您最初查看的图像 并显示 成功 消息 表明您的图像已成功上传 当前的
  • 托管多个 django 站点时出现问题(设置交叉)

    我最近设置了一个 Web 服务器 目前托管着几个静态页面网站和两个 django 项目 这两个 django 项目是 abc 和 xyz 分别位于主文件夹中的不同目录中 每个都有自己的 wsgi 脚本 该脚本指向各自的 settings p
  • 将 rbf 与 scipy 一起使用时出现内存错误

    I want to plot some points with the rbf function like here to get the density distribution of the points 如果我运行以下代码 它工作正常
  • “时钟”是否测量“睡眠”,即挂起的线程?

    我正在尝试理解clock t clock void 功能更好 有以下问题 我理解正确吗clock测量进程的滴答数 因为它是积极奔跑 and sleep挂起调用线程 在这种情况下只有一个线程 即主线程 因此挂起整个进程 意思就是clock不测
  • 使用 PHP 的 HTTP PUT、DELETE 和 I/O 流

    除了 HTTP PUT 方法之外 还有什么方法可以访问通过 HTTP PUT 方法发送的数据 putdata fopen php input r 我从未与PUT and DELETE方法和 putdata fopen php input r
  • 使用图形 api 在 sharepoint online 中创建多选字段的 POST 正文是什么?

    我正在尝试使用 Microsoft Graph 创建新的 SharePoint ListItem 要创建包含标题等简单字段的列表项 我的 POST 正文如下所示 fields Title Ehsan s REST 但是一旦我添加一个具有多选
  • 使用 Ionic core 4 时不会显示离子含量

    我正在开发一个使用 Vue js 和 Ionic 的应用程序 但我不明白为什么更新我的 Ionic 核心版本会破坏 ion content 标签 我尝试谷歌搜索该标签是否已停用 但似乎没有是这样的 为了说明这一点 我制作了一个使用 Ioni
  • 如何测试模块的运行块

    我希望我的 AngularJS 应用程序发出 http 请求以从服务器检索用户信息或重定向到登录屏幕 我在应用程序主模块的运行块中实现了这一点 但是如何在运行块中测试代码呢 或者我应该将此初始化代码移到控制器中以使其可测试 我正在使用 Ka
  • 从 Excel 到 SQL Server 的数据导入无法导入所有数据

    我在使用导入和导出数据工具将数据从 Excel 导入到 SQL Server 时发生了一件奇怪的事情 缺点是我可以在Excel中看到数据 但所有数据都没有导入 我有一本 Excel 工作簿 其中包含一个电子表格 我可以看到列中的数据 一切看
  • 如果没有收到请求的响应,会发生什么情况?我看到重试

    我认为我遇到的问题可能更多是与浏览器相关的问题 但它是一个非常基本的问题 当我冒险构建一个 Web 应用程序时 我也想找到答案 在我的客户端代码中我正在做一个 ajax称呼 这篇文章可能需要一段时间才能回复 我看到的是在一段时间后再次发送请