我正在从头开始构建一个 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 协议中的某些内容?