浏览器在发送POST主体之前闲置

时间:2011-10-18 18:44:48

标签: http httpwebrequest browser http-post

我在网站上看似随机的客户端有一些非常有趣的行为。我看到的是对服务器的随机POST请求导致对后端的错误请求。我已经找到了为什么请求不好 - 但我仍然不知道为什么会这样。

  1. 客户端使用HTTP连接到网络服务器。
  2. 客户端发送普通POST请求(不是正文)的标题
  3. 五秒钟过去了。缓存服务器将请求传递给其后端,因为完成请求花了太长时间。
  4. 缓存服务器回复客户端,并显示错误消息 - 指示请求错误。
  5. 客户端在收到回复后几秒钟发送POST正文。
  6. 我接受缓存服务器可以重新配置为等待更长时间没有问题。我的问题是;客户端在发送的标头和发送POST主体之间等待几秒钟的原因是什么?我不知道这种行为有意义的任何情况。

    这是一个相当普通的Magento电子商务网站,设置了Haproxy - >清漆 - > Nginx - > PHP5-FPM。 Varnish是在五秒钟空闲时间后向Nginx发送请求的组件。

    • 我已经通过tcpdump / wireshark验证服务器在时间内(在Haproxy之前)没有从客户端收到POST主体。
    • 我已经验证过这种情况发生在用户代理之间以及请求类型(普通登录表单,到ajax回调)

    有没有人有任何聪明的想法?

    注意:我不确定这是否是Stack Overflow或Serverfault的问题,但我认为这是一个需要开发人员知识的HTTP问题。

1 个答案:

答案 0 :(得分:2)

服务器有问题 - 你不应该从前端向后端发送部分请求。在发送POST主体之前,客户端可能正在等待服务器的HTTP / 100 Continue响应。客户端也可能正在生成POST数据,并且由于某种原因需要花费一些时间。