gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 05:42:44 27 4
gpt4 key购买 nike

设想:

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

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

    我知道会发生什么 - 我试图理解为什么。任何解释这一点的引用资料或网站也将不胜感激。

    谢谢,

    维韦克

    编辑:看到这个 similar问后问。如果合适,请合并/删除。

    最佳答案

    对您的具体问题的简短回答是,接收服务器的响应(在浏览器内)与接收浏览器的请求(在服务器内)不同。当浏览器打开一个到服务器的新连接时,它所做的是创建一个套接字,然后调用 connectsend在那个 socket 上。当服务器获得这个传入连接时,它可能不关心这是否与之前的某个连接是同一个客户端。如果确实关心(例如,它有登录 session 或购物车),它必须使用 cookie 或诸如此类的东西来将此连接与以前的连接相关联。 (我忽略了持久连接,这超出了您的问题范围。)

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

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

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

    关于browser - 关于从服务器发送响应时浏览器行为的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203552/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com