.. attribute:: protocol_version
- This specifies the HTTP protocol version used in responses. If set to
+ Specifies the HTTP version to which the server is conformant. It is sent
+ in responses to let the client know the server's communication
+ capabilities for future requests. If set to
``'HTTP/1.1'``, the server will permit HTTP persistent connections;
however, your server *must* then include an accurate ``Content-Length``
header (using :meth:`send_header`) in all of its responses to clients.
.. method:: handle_expect_100()
- When a HTTP/1.1 compliant server receives an ``Expect: 100-continue``
+ When an HTTP/1.1 conformant server receives an ``Expect: 100-continue``
request header it responds back with a ``100 Continue`` followed by ``200
OK`` headers.
This method can be overridden to raise an error if the server does not
.. versionadded:: 3.7
``--directory`` argument was introduced.
+By default, the server is conformant to HTTP/1.0. The option ``-p/--protocol``
+specifies the HTTP version to which the server is conformant. For example, the
+following command runs an HTTP/1.1 conformant server::
+
+ python -m http.server --protocol HTTP/1.1
+
+.. versionadded:: 3.11
+ ``--protocol`` argument was introduced.
+
.. class:: CGIHTTPRequestHandler(request, client_address, server)
This class is used to serve either files or output of CGI scripts from the
parser = argparse.ArgumentParser()
parser.add_argument('--cgi', action='store_true',
help='run as CGI server')
- parser.add_argument('--bind', '-b', metavar='ADDRESS',
- help='specify alternate bind address '
+ parser.add_argument('-b', '--bind', metavar='ADDRESS',
+ help='bind to this address '
'(default: all interfaces)')
- parser.add_argument('--directory', '-d', default=os.getcwd(),
- help='specify alternate directory '
+ parser.add_argument('-d', '--directory', default=os.getcwd(),
+ help='serve this directory '
'(default: current directory)')
- parser.add_argument('port', action='store', default=8000, type=int,
- nargs='?',
- help='specify alternate port (default: 8000)')
+ parser.add_argument('-p', '--protocol', metavar='VERSION',
+ default='HTTP/1.0',
+ help='conform to this HTTP version '
+ '(default: %(default)s)')
+ parser.add_argument('port', default=8000, type=int, nargs='?',
+ help='bind to this port '
+ '(default: %(default)s)')
args = parser.parse_args()
if args.cgi:
handler_class = CGIHTTPRequestHandler
ServerClass=DualStackServer,
port=args.port,
bind=args.bind,
+ protocol=args.protocol,
)