CGIHTTPServer モジュールでは、 BaseHTTPServer.BaseHTTPRequestHandler 互換のインタフェース を持ち、SimpleHTTPServer.SimpleHTTPRequestHandler の動作を 継承していますが CGI スクリプトを動作することもできる、 HTTP 要求処理機構クラスを定義しています。
注意: このモジュールは CGI スクリプトを Unix および Windows システム 上で実行させることができます; Mac OS 上では、自分と同じプロセス内で Python スクリプトを実行することしかできないはずです。
注意: CGIHTTPRequestHandler クラスで実行されるCGIスクリプトは HTTP コード200 (スクリプトの出力が後に続く)を実行に先立って出力される (これがステータスコードになります) ため、リダイレクト(コード302)を行 なうことができません。
CGIHTTPServer モジュールでは、以下のクラスを定義しています:
request, client_address, server) |
このクラスでは、ファイルが CGI スクリプトであると推測された 場合、これをファイルして提供する代わりにスクリプトを実行します。 他の一般的なサーバ設定は特殊な拡張子を使って CGI スクリプトであることを 示すのに対し、ディレクトリベースの CGI だけが使われます。
do_GET() および do_HEAD() 関数は、HTTP 要求
が cgi_directories
パス以下のどこかを指している場合、
ファイルを提供するのではなく、CGI スクリプトを実行してその出力を
提供するように変更されています。
CGIHTTPRequestHandler では以下のデータメンバを定義しています:
['/cgi-bin', '/htbin']
であり、CGI スクリプト
を含んでいることを示すディレクトリを記述します。
CGIHTTPRequestHandler では以下のメソッドを定義しています:
) |
'POST'
型の HTTP 要求に対するサービスを行います。
CGI でない url に対して POST を試みた場合、出力は
Error 501, "Can only POST to CGI scripts" になります。
セキュリティ上の理由から、CGI スクリプトはユーザ nobody の UID で動作 するので注意してください。CGI スクリプトが原因で発生した問題は、 Error 403 に変換されます。
使用例については、test() 関数の実装を参照してください。
参考:
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。