httprfc

HTTP version mismatch - server response code


I'm trying to code an HTTP 1.0 (and only 1.0 for the moment) server in C++.

I've read the HTTP 1.0 specs here : https://www.w3.org/Protocols/HTTP/1.0/spec.html. On section 3 "Protocol Parameters", subsection 3.1 "HTTP Version", I've found nothing when a client sent a different version from the server.

According to https://www.w3.org/DesignIssues/Protocolcomms.html, when version mismatch, we have two possibilities:

An official quote from the IETF RFC's should be appreciable, or at least an example with current most used web servers like Apache or Nginx.


Solution

  • You seem to be interpreting the last-mentioned document incorrectly. In your case, the issue is v(ME) < v(IT) (or v(ME) + 1 = v(IT)), and the document doesn't present a solution for that situation.

    However, RFC 2616 (HTTP/1.1) states (in 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.

    So if you implement a fully compliant 1.0 server, the client should accept its responses.

    RFC 7230 also has some pointers on how to deal with 1.1 clients.