mirror of
https://github.com/python/cpython.git
synced 2025-09-19 15:10:58 +00:00
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:
parent
32e4f450af
commit
2d30adee72
3 changed files with 29 additions and 9 deletions
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
@ -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.
|
Loading…
Add table
Add a link
Reference in a new issue