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

时间:2016-09-09 09:30:11

标签: http rfc

我试图用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的一个例子。

1 个答案:

答案 0 :(得分: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客户的指示。