mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	SourceForge doesn't choke on this batch :-)
I'm not entirely sure this is 100% correct. The patch changes an
\index{persistency} to \index{presistence}, and I don't know what \index{}
does. But it seems to do so persi--er, consistently, so I hope it isn't a
problem.
		
	
			
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
\section{\module{CGIHTTPServer} ---
 | 
						|
         A Do-Something Request Handler}
 | 
						|
 | 
						|
 | 
						|
\declaremodule{standard}{CGIHTTPServer}
 | 
						|
  \platform{Unix}
 | 
						|
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
 | 
						|
\modulesynopsis{This module provides a request handler for HTTP servers
 | 
						|
                which can run CGI scripts.}
 | 
						|
 | 
						|
 | 
						|
The \module{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.
 | 
						|
 | 
						|
\strong{Note:}  This module is \UNIX{} dependent since it creates the
 | 
						|
CGI process using \function{os.fork()} and \function{os.exec()}.
 | 
						|
 | 
						|
The \module{CGIHTTPServer} module defines the following class:
 | 
						|
 | 
						|
\begin{classdesc}{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 \function{do_GET()} and \function{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
 | 
						|
\code{cgi_directories} path.
 | 
						|
\end{classdesc}
 | 
						|
 | 
						|
The \class{CGIHTTPRequestHandler} defines the following data member:
 | 
						|
 | 
						|
\begin{memberdesc}{cgi_directories}
 | 
						|
This defaults to \code{['/cgi-bin', '/htbin']} and describes
 | 
						|
directories to treat as containing CGI scripts.
 | 
						|
\end{memberdesc}
 | 
						|
 | 
						|
The \class{CGIHTTPRequestHandler} defines the following methods:
 | 
						|
 | 
						|
\begin{methoddesc}{do_POST}{}
 | 
						|
This method serves the \code{'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.
 | 
						|
\end{methoddesc}
 | 
						|
 | 
						|
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 \function{test()}
 | 
						|
function.
 | 
						|
 | 
						|
 | 
						|
\begin{seealso}
 | 
						|
  \seemodule{BaseHTTPServer}{Base class implementation for Web server
 | 
						|
                             and request handler.}
 | 
						|
\end{seealso}
 |