有关从服务器发送响应时的浏览器行为的问题

Viv*_*ira 8 browser httpresponse httprequest

场景:

  • 浏览器向服务器提交HTTP请求.
  • 用户同时点击书签或页面上的另一个链接,从而产生对服务器的新请求.
  • 服务器现在发回两个HTTP响应(或浏览器从两个服务器获取响应).

浏览器如何确定实际处理哪些响应?

我知道会发生什么 - 我想知道为什么.任何解释这一点的参考或网站也将非常感激.

谢谢,

维韦克.

编辑:询问后看到这个类似的问题.如果合适,请合并/删除.

gat*_*kin 15

有关如何完成网络编程的一般性讨论,请参阅此问题.

对您的具体问题的简短回答是,接收服务器的响应(在浏览器中)与接收浏览器的请求(在服务器内)不同.当浏览器打开一个到服务器的新连接,它在做什么是创建一个插座,然后调用connectsend该插座上.当服务器获得此传入连接时,它可能不关心这是否与先前的连接相同.如果关心(例如,它已经登录会话或购物车),它必须使用cookie或诸如此类将此连接与之前的连接相关联.(我忽略了持久连接,这超出了你的问题的范围.)

但是当浏览器收到来自服务器的响应时,它通过调用recv它用于发送请求的同一个套接字来实现,因此它知道响应在它开始读取之前请求的请求.从理论上讲,浏览器正在维护有关其已打开的连接的状态信息.实际上,它有一个列表或插座数组.

浏览器还会跟踪哪些窗口和选项卡与哪些套接字相关联.这是它如何更新微调器和状态行以反映相应连接的状态.如果用户单击停止按钮,它将知道要关闭的套接字(或套接字).

因此,在您的方案中,用户单击了与现有套接字关联的窗口或选项卡中的链接或书签,该套接字表示尚未收到服务器响应的服务器的连接.浏览器可以简单地关闭该套接字,就好像用户单击了停止按钮一样.即使它没有关闭它,浏览器也知道用户不再希望看到响应.同时,它为用户感兴趣的服务器打开一个新套接字.

  • 我很抱歉.直到今天才访问该网站.已经添加了另一笔赏金,并将在明天将其奖励给这个答案. (5认同)
  • 常见问题解答说,如果未在7天内(由提供奖励的人)授予赏金,那么一半金额将自动奖励给满足某些条件的问题。我认为就是这样。 (2认同)
  • 态度很好Vivek! (2认同)