0

Python で基本的な Web サーバーをセットアップする方法を理解しようとしていますが、非常に困難です。

私の主な問題は、サーバーに Web ページを 1 回しか提供できないことです。html はブラウザにメッセージを表示し、Javascript はコンソールに別のメッセージを表示します。

サーバーを起動してhttp://127.0.0.1:8080に移動すると、両方のメッセージが表示され、すべて問題ありません。ただし、2 つ目のブラウザー タブを開いて再度そこに移動すると、問題が発生します。ターミナルで GET HTTP リクエストを取得しますが、GET Javascript リクエストは取得しません。また、ブラウザ ウィンドウにもコンソールにも何も表示されません。

私は何を間違っていますか?任意の提案をいただければ幸いです。

ここに私のPythonコードがあります:

import BaseHTTPServer
from os import curdir, sep

htmlfile="htmltest.html"
htmlpage =open(curdir+sep+htmlfile, 'rb')
jsfile="jstest.js"
jspage=open(curdir+sep+jsfile, 'rb')
notfound = "File not found"

class WelcomeHandler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_OPTIONS(self):
        self.send_response(200)
        self.send_header('Access-Control-Allow-Origin', '*')                
        self.send_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
        self.send_header("Access-Control-Allow-Headers", "X-Requested-With") 

    def do_GET(self):
        if self.path == "/":
            print "get html"
            self.send_response(200)
            self.send_header("Content-type","text/html")
            self.end_headers()
            self.wfile.write(htmlpage.read())
        elif self.path=="/jstest.js":
            print "get js"
            self.send_response(200)
            self.send_header("Content-type","text/js")
            self.end_headers()
            self.wfile.write(jspage.read())
        else:
            self.send_error(404, notfound)

httpserver = BaseHTTPServer.HTTPServer(("127.0.0.1",8080), WelcomeHandler)
#httpserver.serve_forever()
while True:
    httpserver.handle_request()
4

1 に答える 1

1

openPython でファイルとreadその内容を参照する場合、「ファイル ポインタ」(つまり、次の開始read位置) はファイルの最後になります。再度読み取るには、ファイルを再度開くか、ファイルの先頭まで巻き戻す必要があります。

ファイルが頻繁に変更されることが予想される場合を除き、最初にファイルを読み取り、その内容を変数に格納してから提供することをお勧めします。openまたは、 ing をメソッドに移動してdo_GET、リクエストごとに新しく開くこともできます。

于 2015-11-09T20:00:57.757 に答える