8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

为什么 Chrome 打开连接但不发送任何内容

Soumya Bokare 2月前

37 0

我正在从头开始构建一个 Web 服务器,只是为了好玩,但我注意到 Chrome 有一些奇怪的行为。我从 Chrome 收到的对 / 的 GET 请求如下所示:GET / HTTP/1.1Host: loca...

我正在从头开始构建一个 Web 服务器,只是为了好玩,但我注意到 Chrome 有一些奇怪的行为。我从 Chrome 收到的 GET 请求如下所示 /

GET / HTTP/1.1
Host: localhost:8000
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

没什么特别的,但它也向我的服务器发出另一个请求,但没有发送任何东西,这导致我的服务器永远等待传入消息。

Safari 不会出现此行为。我已将服务器设置为对每个请求都响应 403,但持久连接仍然存在。此连接的用途是什么?我应该如何处理它?我是否遗漏了 HTTP 协议中的某些内容?

帖子版权声明 1、本帖标题:为什么 Chrome 打开连接但不发送任何内容
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Soumya Bokare在本站《sockets》版块原创发布, 转载请注明出处!
最新回复 (0)
  • HTTP/1.1 浏览器倾向于打开多个 TCP 连接。如果您的服务器一次只能处理一个连接,则可能会陷入死锁。 select 当每个连接有请求就绪时,您应该使用线程或非阻塞 IO ( ) 来处理每个连接。

    Chrome 可能会打开一个额外的套接字,以便在第一个套接字关闭时可以做好准备,但我不确定。除了关闭套接字之外,HTTP/1.1 没有其他方法可以取消请求/响应,并且服务器也有可能在 Connection: close 完成响应后发送,因此浏览器正在为未来的请求做准备。

  • Chrone 在前一个连接完成之前打开另一个连接以提高效率似乎是合理的,但我的服务器确实在每个请求中都包含 Connection: close。也许你是对的,这只是 Chrome 试图为下一个可能的请求做好准备,但只是为了让 Chrome 看起来更快而浪费服务器的时间似乎不太好。

返回
作者最近主题: