The SimpleHTTPServer module is a simple HTTP server that provides standard GET and HEAD request handlers. The pathname given by the client is interpreted as a relative filename (relative to the current directory when the server was started, that is). The module's use is demonstrated in Example 7-37.
Example 7-37. Using the SimpleHTTPServer Module
File: simplehttpserver-example-1.py
import SimpleHTTPServer
import SocketServer
# minimal web server. serves files relative to the
# current directory.
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()
serving at port 8000
localhost - - [11/Oct/1999 15:07:44] code 403, message Directory listing not sup
ported
localhost - - [11/Oct/1999 15:07:44] "GET / HTTP/1.1" 403 -
localhost - - [11/Oct/1999 15:07:56] "GET /samples/sample.htm HTTP/1.1" 200 -
The server ignores drive letters and relative pathnames (such as `..'). However, it does not implement any other access control mechanisms, so be careful.
Example 7-38 implements a truly minimal web proxy. When sent to a proxy, the HTTP requests should include the full URI for the target server. This server uses urllib to fetch data from the target.
Example 7-38. Using the SimpleHTTPServer Module as a Proxy
File: simplehttpserver-example-2.py
# a truly minimal HTTP proxy
import SocketServer
import SimpleHTTPServer
import urllib
PORT = 1234
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
 def do_GET(self):
 self.copyfile(urllib.urlopen(self.path), self.wfile)
httpd = SocketServer.ForkingTCPServer(('', PORT), Proxy)
print "serving at port", PORT
httpd.serve_forever()
 
			
			
			Core Modules
More Standard Modules
Threads and Processes
Data Representation
File Formats
Mail and News Message Processing
Network Protocols
Internationalization
Multimedia Modules
Data Storage
Tools and Utilities
Platform-Specific Modules
Implementation Support Modules
Other Modules

