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,当版本不匹配时,我们有两种可能:
- Version(server) = Version(client) + 1 : 应该降级到以前的版本(不可能?我的服务器只处理一个特定版本 - 我可能必须处理 HTTP 0.9?)
- 版本(服务器)> 版本(客户端)+ 1:向用户发出警报(哪个?4xx、5xx?)
来自 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 客户端的指示。
我正在尝试用 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,当版本不匹配时,我们有两种可能:
- Version(server) = Version(client) + 1 : 应该降级到以前的版本(不可能?我的服务器只处理一个特定版本 - 我可能必须处理 HTTP 0.9?)
- 版本(服务器)> 版本(客户端)+ 1:向用户发出警报(哪个?4xx、5xx?)
来自 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 客户端的指示。