假设我想要在给定域上请求某些资源,例如example.com/image.jpg。
如果我对这个特定资源发出两个请求,我可以期待我得到的第一个响应可以映射到我发送的第一个响应,依此类推(或者这取决于客户端/服务器实现)?
我问,因为如果我想调试请求 - 响应对,我必须确切地知道哪个响应属于哪个请求(用于计时目的等)。那么,有没有可靠的方法来实现这种映射?
答案 0 :(得分:0)
我假设您在发送新请求时使用持久连接(即HTTP保持活动)谈论HTTP / 1.x而没有对前一个请求的响应,即使用HTTP pipelining。在这种情况下,响应的顺序与请求的顺序相匹配。
如果您正在谈论HTTP / 2,那么情况就不同了,因为多个请求可以在同一个TCP连接中并行接收响应,这也意味着以后的请求可能在之前的请求之前收到了响应。并且服务器处理对同一资源的请求的顺序完全取决于服务器实现。
当请求在独立的TCP连接中完成时也是如此。订单可能比HTTP / 2更难以预测,因为请求可能在不同的线程或进程中处理,因此顺序也取决于操作系统中这些请求的调度。