mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			74 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
|   | 
 | ||
|  | :mod:`CGIHTTPServer` --- CGI-capable HTTP request handler
 | ||
|  | =========================================================
 | ||
|  | 
 | ||
|  | .. module:: CGIHTTPServer
 | ||
|  |    :synopsis: This module provides a request handler for HTTP servers which can run CGI
 | ||
|  |               scripts.
 | ||
|  | .. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
 | ||
|  | 
 | ||
|  | 
 | ||
|  | The :mod:`CGIHTTPServer` module defines a request-handler class, interface
 | ||
|  | compatible with :class:`BaseHTTPServer.BaseHTTPRequestHandler` and inherits
 | ||
|  | behavior from :class:`SimpleHTTPServer.SimpleHTTPRequestHandler` but can also
 | ||
|  | run CGI scripts.
 | ||
|  | 
 | ||
|  | .. note::
 | ||
|  | 
 | ||
|  |    This module can run CGI scripts on Unix and Windows systems; on Mac OS it will
 | ||
|  |    only be able to run Python scripts within the same process as itself.
 | ||
|  | 
 | ||
|  | .. note::
 | ||
|  | 
 | ||
|  |    CGI scripts run by the :class:`CGIHTTPRequestHandler` class cannot execute
 | ||
|  |    redirects (HTTP code 302), because code 200 (script output follows) is sent
 | ||
|  |    prior to execution of the CGI script.  This pre-empts the status code.
 | ||
|  | 
 | ||
|  | The :mod:`CGIHTTPServer` module defines the following class:
 | ||
|  | 
 | ||
|  | 
 | ||
|  | .. class:: CGIHTTPRequestHandler(request, client_address, server)
 | ||
|  | 
 | ||
|  |    This class is used to serve either files or output of CGI scripts from  the
 | ||
|  |    current directory and below. Note that mapping HTTP hierarchic structure to
 | ||
|  |    local directory structure is exactly as in
 | ||
|  |    :class:`SimpleHTTPServer.SimpleHTTPRequestHandler`.
 | ||
|  | 
 | ||
|  |    The class will however, run the CGI script, instead of serving it as a file, if
 | ||
|  |    it guesses it to be a CGI script. Only directory-based CGI are used --- the
 | ||
|  |    other common server configuration is to treat special extensions as denoting CGI
 | ||
|  |    scripts.
 | ||
|  | 
 | ||
|  |    The :func:`do_GET` and :func:`do_HEAD` functions are modified to run CGI scripts
 | ||
|  |    and serve the output, instead of serving files, if the request leads to
 | ||
|  |    somewhere below the ``cgi_directories`` path.
 | ||
|  | 
 | ||
|  | The :class:`CGIHTTPRequestHandler` defines the following data member:
 | ||
|  | 
 | ||
|  | 
 | ||
|  | .. attribute:: CGIHTTPRequestHandler.cgi_directories
 | ||
|  | 
 | ||
|  |    This defaults to ``['/cgi-bin', '/htbin']`` and describes directories to treat
 | ||
|  |    as containing CGI scripts.
 | ||
|  | 
 | ||
|  | The :class:`CGIHTTPRequestHandler` defines the following methods:
 | ||
|  | 
 | ||
|  | 
 | ||
|  | .. method:: CGIHTTPRequestHandler.do_POST()
 | ||
|  | 
 | ||
|  |    This method serves the ``'POST'`` request type, only allowed for CGI scripts.
 | ||
|  |    Error 501, "Can only POST to CGI scripts", is output when trying to POST to a
 | ||
|  |    non-CGI url.
 | ||
|  | 
 | ||
|  | Note that CGI scripts will be run with UID of user nobody, for security reasons.
 | ||
|  | Problems with the CGI script will be translated to error 403.
 | ||
|  | 
 | ||
|  | For example usage, see the implementation of the :func:`test` function.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | .. seealso::
 | ||
|  | 
 | ||
|  |    Module :mod:`BaseHTTPServer`
 | ||
|  |       Base class implementation for Web server and request handler.
 | ||
|  | 
 |