1

私は初心者です。Python で書かれた CGI スクリプトを実行する Python で単純な Web サーバーを作成して使用しようとしています。Windows XP と Python v3.3.0 を使用しています。「myserver.py」、「sample.html」を含む「myserver」ディレクトリと、「cgi_demo.py」を含む「cgi-bin」ディレクトリがあります。

myserver.py

from http.server import HTTPServer
from http.server import CGIHTTPRequestHandler

port = 8080
host = '127.0.0.1'
server_address = (host,port) 
httpd = HTTPServer(server_address,CGIHTTPRequestHandler)
print("Starting my web server on port "+str(port))
httpd.serve_forever()

cgi_demo.py

import cgi
import cgitb; cgitb.enable()

print("Content-type: text/html")
print
print("<html><body>")
for i in range(0,100):
  print(i,"<br>")
print("</body></html>")

これで、ディレクトリ リストは "myserver" では正常に機能しますが、"cgi-bin" では機能しません。おそらくそれがコード化されている方法です-ここでは問題ありません。「sample.html」も正常に取得されます。ただし、「cgi_demo.py」の実行は適切ではありません。ブラウザに空白のページが表示されます。コンソール ウィンドウ (これも空白) が表示されたり消えたりします。さらに、サーバーのコンソールにメッセージが表示されます

127.0.0.1 - - [29/Nov/2012 12:00:31] "GET /cgi-bin/cgi_demo.py HTTP/1.1" 200 -
127.0.0.1 - - [29/Nov/2012 12:00:31] command: C:\Python33\python.exe -u "D:\python apps\my web server\cgi-bin\cgi_demo.py" ""
127.0.0.1 - - [29/Nov/2012 12:00:32] CGI script exited OK

何が悪いのか教えてください!スクリプトの出力ストリームがサーバーに接続されていないように感じます。私は何を間違っていますか?CGIHTTPRequestHandler を拡張しなければならないとは言わないでください!!

4

1 に答える 1

2

ご迷惑おかけして申し訳ありません!

まあ、それは私のせいです。2 つの注意事項:

[1]現れたり消えたりしたコンソールウィンドウ。IDLE を使用してサーバーを実行した場合にのみ発生します。スクリプトが通常の Windows コンソールで既に実行されている場合、これは発生しません。私の気持ちは間違っていました。

[2]cgi スクリプトにバグ/エラーがあります。HTTP ヘッダーを印刷した後。私が書いたprintステートメントは、実際には「print()」ではなく、単に「print」でした.これはとても恥ずかしいです! しかし、それでもインタプリタがこのエラーをキャッチしなかったのはなぜでしょうか?

于 2012-11-29T14:37:11.120 に答える