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

问题描述 投票:0回答: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,当版本不匹配时,我们有两种可能:

  • 版本(服务器) = 版本(客户端)+ 1 :应该降级到以前的版本(不可能?我的服务器只处理一个特定版本 - 我可以处理 HTTP 0.9 吗?)
  • 版本(服务器)> 版本(客户端)+ 1:向用户发出警报(哪一个?4xx、5xx?)

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

http rfc
1个回答
2
投票

您似乎错误地解释了最后提到的文件。就您而言,问题是

v(ME) < v(IT)
(或
v(ME) + 1 = v(IT)
),并且该文档没有针对这种情况提供解决方案。

但是,RFC 2616 (HTTP/1.1) 指出(在 19.6 中):

我们期望 HTTP/1.1 客户端:

  • 识别 HTTP/1.0 和 1.1 响应的状态行格式;

  • 理解 HTTP/0.9、1.0 或 1.1 格式的任何有效响应。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.