浏览器请求的HTTP版本和服务器响应的HTTP版本是如何确定的?

浏览器请求的HTTP版本和服务器响应的HTTP版本是如何确定的?

有人能验证我的假设是否正确吗?

我认为大多数流行的浏览器(Chrome,Firefox等)都以标准方式在每行请求中使用 HTTP/1.1 发送请求。

我认为是否给出 HTTP/1.1 响应取决于托管 Web 应用程序的 Web 服务器(例如特定版本的 Apache、Nginx 等)。我假设现在所有现代 Web 服务器都具有 HTTP/1.1。如果 Web 服务器不支持 HTTP/1.1,我认为它会将 HTTP/1.1 请求解释为 HTTP/1.0 并给出 HTTP/1.0 响应。

答案1

是的,我相信你已经了解了其中的要点,但有一个例外:

  1. 每个请求都指定 HTTP 协议级别。
  2. Web 服务器根据具有上/下级别版本控制的请求来决定采取什么不同的行动(如果有的话)。
  3. HTTP/1.1 已经很完善并且任何像样的服务器都会支持它。

但是版本匹配并不像你建议的那样自适应。如果客户端请求指定了服务器不支持的主要版本,则服务器会响应…

505 HTTP 版本不受支持

在您的情况下,1.1 和 1.0 共享一个主要版本,因此(除了一些例外)您的假设是正确的,服务器将尝试响应低级别的请求。

有关 http 响应代码的更多信息,请参阅RFC 2616 第 10 节第 3.1 节

相关内容