Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfaac627

Browse files
authored
gh-133810: removehttp.server.CGIHTTPRequestHandler and--cgi flag (#133811)
The CGI HTTP request handler has been deprecated since Python 3.13.
1 parent2f1ecb3 commitfaac627

File tree

11 files changed

+28
-755
lines changed

11 files changed

+28
-755
lines changed

‎Doc/deprecations/pending-removal-in-3.15.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Pending removal in Python 3.15
2020

2121
*:mod:`http.server`:
2222

23-
* The obsolete and rarely used:class:`~http.server.CGIHTTPRequestHandler`
23+
* The obsolete and rarely used:class:`!CGIHTTPRequestHandler`
2424
has been deprecated since Python 3.13.
2525
No direct replacement exists.
2626
*Anything* is better than CGI to interface

‎Doc/library/http.server.rst

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -458,55 +458,6 @@ such as using different index file names by overriding the class attribute
458458
:attr:`index_pages`.
459459

460460

461-
..class::CGIHTTPRequestHandler(request, client_address, server)
462-
463-
This class is used to serve either files or output of CGI scripts from the
464-
current directory and below. Note that mapping HTTP hierarchic structure to
465-
local directory structure is exactly as in:class:`SimpleHTTPRequestHandler`.
466-
467-
..note::
468-
469-
CGI scripts run by the:class:`CGIHTTPRequestHandler` class cannot execute
470-
redirects (HTTP code 302), because code 200 (script output follows) is
471-
sent prior to execution of the CGI script. This pre-empts the status
472-
code.
473-
474-
The class will however, run the CGI script, instead of serving it as a file,
475-
if it guesses it to be a CGI script. Only directory-based CGI are used ---
476-
the other common server configuration is to treat special extensions as
477-
denoting CGI scripts.
478-
479-
The:func:`do_GET` and:func:`do_HEAD` functions are modified to run CGI scripts
480-
and serve the output, instead of serving files, if the request leads to
481-
somewhere below the ``cgi_directories`` path.
482-
483-
The:class:`CGIHTTPRequestHandler` defines the following data member:
484-
485-
..attribute::cgi_directories
486-
487-
This defaults to ``['/cgi-bin', '/htbin']`` and describes directories to
488-
treat as containing CGI scripts.
489-
490-
The:class:`CGIHTTPRequestHandler` defines the following method:
491-
492-
..method::do_POST()
493-
494-
This method serves the ``'POST'`` request type, only allowed for CGI
495-
scripts. Error 501, "Can only POST to CGI scripts", is output when trying
496-
to POST to a non-CGI url.
497-
498-
Note that CGI scripts will be run with UID of user nobody, for security
499-
reasons. Problems with the CGI script will be translated to error 403.
500-
501-
..deprecated-removed::3.13 3.15
502-
503-
:class:`CGIHTTPRequestHandler` is being removed in 3.15. CGI has not
504-
been considered a good way to do things for well over a decade. This code
505-
has been unmaintained for a while now and sees very little practical use.
506-
Retaining it could lead to further:ref:`security considerations
507-
<http.server-security>`.
508-
509-
510461
.. _http-server-cli:
511462

512463
Command-line interface
@@ -563,24 +514,6 @@ The following options are accepted:
563514

564515
..versionadded::3.11
565516

566-
..option::--cgi
567-
568-
:class:`CGIHTTPRequestHandler` can be enabled in the command line by passing
569-
the ``--cgi`` option::
570-
571-
python -m http.server --cgi
572-
573-
..deprecated-removed::3.13 3.15
574-
575-
:mod:`http.server` command line ``--cgi`` support is being removed
576-
because:class:`CGIHTTPRequestHandler` is being removed.
577-
578-
..warning::
579-
580-
:class:`CGIHTTPRequestHandler` and the ``--cgi`` command-line option
581-
are not intended for use by untrusted clients and may be vulnerable
582-
to exploitation. Always use within a secure environment.
583-
584517
..option::--tls-cert
585518

586519
Specifies a TLS certificate chain for HTTPS connections::

‎Doc/whatsnew/3.13.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1871,7 +1871,7 @@ New Deprecations
18711871

18721872
*:mod:`http.server`:
18731873

1874-
* Deprecate:class:`~http.server.CGIHTTPRequestHandler`,
1874+
* Deprecate:class:`!CGIHTTPRequestHandler`,
18751875
to be removed in Python 3.15.
18761876
Process-based CGI HTTP servers have been out of favor for a very long time.
18771877
This code was outdated, unmaintained, and rarely used.

‎Doc/whatsnew/3.15.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,15 @@ Deprecated
121121
Removed
122122
=======
123123

124+
http.server
125+
-----------
126+
127+
* Removed the:class:`!CGIHTTPRequestHandler` class
128+
and the ``--cgi`` flag from the:program:`python -m http.server`
129+
command-line interface. They were deprecated in Python 3.13.
130+
(Contributed by Bénédikt Tran in:gh:`133810`.)
131+
132+
124133
platform
125134
--------
126135

‎Lib/_compat_pickle.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,6 @@
175175
'SimpleDialog':'tkinter.simpledialog',
176176
'DocXMLRPCServer':'xmlrpc.server',
177177
'SimpleHTTPServer':'http.server',
178-
'CGIHTTPServer':'http.server',
179178
# For compatibility with broken pickles saved in old Python 3 versions
180179
'UserDict':'collections',
181180
'UserList':'collections',
@@ -217,8 +216,6 @@
217216
('DocXMLRPCServer','DocCGIXMLRPCRequestHandler'),
218217
('http.server','SimpleHTTPRequestHandler'):
219218
('SimpleHTTPServer','SimpleHTTPRequestHandler'),
220-
('http.server','CGIHTTPRequestHandler'):
221-
('CGIHTTPServer','CGIHTTPRequestHandler'),
222219
('_socket','socket'): ('socket','_socketobject'),
223220
})
224221

‎Lib/http/client.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -181,11 +181,10 @@ def _strip_ipv6_iface(enc_name: bytes) -> bytes:
181181
returnenc_name
182182

183183
classHTTPMessage(email.message.Message):
184-
# XXX The only usage of this method is in
185-
# http.server.CGIHTTPRequestHandler. Maybe move the code there so
186-
# that it doesn't need to be part of the public API. The API has
187-
# never been defined so this could cause backwards compatibility
188-
# issues.
184+
185+
# The getallmatchingheaders() method was only used by the CGI handler
186+
# that was removed in Python 3.15. However, since the public API was not
187+
# properly defined, it will be kept for backwards compatibility reasons.
189188

190189
defgetallmatchingheaders(self,name):
191190
"""Find all header lines matching a given header name.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp