HTTP 版本不匹配 - 服务器响应代码

HTTP version mismatch - server response code

我正在尝试用 C++ 编写 HTTP 1.0(目前只有 1.0)服务器。

我在这里阅读了 HTTP 1.0 规范:https://www.w3.org/Protocols/HTTP/1.0/spec.html。 在第 3 节“协议参数”,第 3.1 节“HTTP 版本”,当客户端从服务器发送不同的版本时,我什么也没发现.

根据https://www.w3.org/DesignIssues/Protocolcomms.html,当版本不匹配时,我们有两种可能:

来自 IETF RFC 的官方引述应该是可取的,或者至少是当前最常用的 Web 服务器(如 Apache 或 Nginx)的示例。

您似乎对最后提到的文件的解释不正确。在您的情况下,问题是 v(ME) < v(IT)(或 v(ME) + 1 = v(IT)),文档没有针对该情况提供解决方案。

但是,RFC 2616 (HTTP/1.1) 声明(在 19.6 中):

And we would expect HTTP/1.1 clients to:

  • recognize the format of the Status-Line for HTTP/1.0 and 1.1 responses;

  • understand any valid response in the format of HTTP/0.9, 1.0, or 1.1.

因此,如果您实施完全兼容的 1.0 服务器,客户端应接受其响应。

RFC 7230 也有一些关于如何处理 1.1 客户端的指示。