The SimpleHTTPServer Module

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): ...

Get Python Standard Library now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.