SimpleHTTPServer モジュールはリクエストハンドラ (request-handler) クラスを定義しています。インタフェースは BaseHTTPServer.BaseHTTPRequestHandler と互換で、 基底ディレクトリにあるファイルだけを提供します。
SimpleHTTPServer モジュールでは以下のクラスを定義しています:
request, client_address, server) |
リクエストの解釈のような、多くの作業は基底クラス BaseHTTPServer.BaseHTTPRequestHandler で行われます。 このクラスは関数 do_GET() および do_HEAD() を実装しています。
SimpleHTTPRequestHandler では以下のメンバ変数を定義しています:
"SimpleHTTP/" + __version__
になります。
__version__
はこのモジュールで定義されている値です。
application/octet-stream
と見なされます。
対応付けは大小文字の区別をするので、小文字のキーのみを入れるべきです。
SimpleHTTPRequestHandler では以下のメソッドを定義しています:
) |
'HEAD'
型のリクエスト処理を実行します: すなわち、
GET
リクエストの時に送信されるものと同じヘッダを送信します。
送信される可能性のあるヘッダについての完全な説明は do_GET()
メソッドを参照してください。
) |
リクエストがディレクトリに対応付けられた場合、index.html
またはindex.htm
をこの順序でチェックします。
もしファイルを発見できればその内容を、そうでなければディレクトリ一覧
をlist_directory()メソッドで生成して、返します。
このメソッドはos.listdir()をディレクトリのスキャンに用いてお
り、listdir()が失敗した場合には 404
応答
が返されます。
リクエストがファイルに対応付けられた場合、そのファイルを開いて内容を
返します。要求されたファイルを開く際に何らかの IOError 例外
が送出された場合、リクエストは 404
、'File not found'
エラーに対応づけられます。そうでない場合、コンテントタイプが
extensions_map 変数を用いて推測されます。
出力は 'Content-type:'
と推測されたコンテントタイプで、その
後にファイルサイズを示す 'Content-Lenght;'
ヘッダと、
ファイルの更新日時を示す 'Last-Modified:'
ヘッダが続きます。
そしてヘッダの終了を示す空白行が続き、さらにその後にファイルの内容が
続きます。このファイルはコンテントタイプがtext/
で始まっている場合
はテキストモードで、そうでなければバイナリモードで開かれます。
使用例については関数 test() の実装を参照してください。
バージョン 2.5 で 新たに追加 された仕様:
'Last-Modified'
ヘッダ
参考: