bpo-46285: Add command-line option -p/--protocol to module http.server (#30999)

Co-authored-by: Éric <merwok@netwok.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
Géry Ogam 2022-05-03 00:28:45 +02:00 committed by GitHub
parent 32e4f450af
commit 2d30adee72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 9 deletions

View file

@ -157,7 +157,9 @@ provides three different variants:
.. attribute:: protocol_version .. 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; ``'HTTP/1.1'``, the server will permit HTTP persistent connections;
however, your server *must* then include an accurate ``Content-Length`` however, your server *must* then include an accurate ``Content-Length``
header (using :meth:`send_header`) in all of its responses to clients. header (using :meth:`send_header`) in all of its responses to clients.
@ -193,7 +195,7 @@ provides three different variants:
.. method:: handle_expect_100() .. 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 request header it responds back with a ``100 Continue`` followed by ``200
OK`` headers. OK`` headers.
This method can be overridden to raise an error if the server does not This method can be overridden to raise an error if the server does not
@ -444,6 +446,15 @@ the following command uses a specific directory::
.. versionadded:: 3.7 .. versionadded:: 3.7
``--directory`` argument was introduced. ``--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) .. class:: CGIHTTPRequestHandler(request, client_address, server)
This class is used to serve either files or output of CGI scripts from the This class is used to serve either files or output of CGI scripts from the

View file

@ -1256,15 +1256,19 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--cgi', action='store_true', parser.add_argument('--cgi', action='store_true',
help='run as CGI server') help='run as CGI server')
parser.add_argument('--bind', '-b', metavar='ADDRESS', parser.add_argument('-b', '--bind', metavar='ADDRESS',
help='specify alternate bind address ' help='bind to this address '
'(default: all interfaces)') '(default: all interfaces)')
parser.add_argument('--directory', '-d', default=os.getcwd(), parser.add_argument('-d', '--directory', default=os.getcwd(),
help='specify alternate directory ' help='serve this directory '
'(default: current directory)') '(default: current directory)')
parser.add_argument('port', action='store', default=8000, type=int, parser.add_argument('-p', '--protocol', metavar='VERSION',
nargs='?', default='HTTP/1.0',
help='specify alternate port (default: 8000)') 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() args = parser.parse_args()
if args.cgi: if args.cgi:
handler_class = CGIHTTPRequestHandler handler_class = CGIHTTPRequestHandler
@ -1290,4 +1294,5 @@ if __name__ == '__main__':
ServerClass=DualStackServer, ServerClass=DualStackServer,
port=args.port, port=args.port,
bind=args.bind, bind=args.bind,
protocol=args.protocol,
) )

View file

@ -0,0 +1,4 @@
Add command-line option ``-p``/``--protocol`` to module :mod:`http.server`
which specifies the HTTP version to which the server is conformant (HTTP/1.1
conformant servers can now be run from the command-line interface of module
:mod:`http.server`). Patch by Géry Ogam.