BaseHTTPServer 只提供网页一次
BaseHTTPServer only Serves Webpage Once
我正在尝试弄清楚如何在 Python 中设置基本的 Web 服务器,但我遇到了很多困难。
我的主要问题是我只能让我的服务器为网页提供一次服务。 html 在浏览器中显示一条消息,Javascript 在控制台中显示另一条消息。
当我启动服务器并转到 http://127.0.0.1:8080 时,我的两条消息都会显示,一切正常。但是,当我打开第二个浏览器选项卡并再次访问时,我 运行 遇到了问题。我在终端中收到 GET HTTP 请求,但没有收到 GET Javascript 请求。浏览器 window 或控制台中均未显示任何内容。
我做错了什么?如有任何建议,我们将不胜感激。
这是我的 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()
当您 open
Python 中的文件和 read
其内容时,"file pointer"(即下一个 read
的起始位置)是然后在文件的末尾。您必须重新打开它或倒回到文件的开头才能再次阅读它。
除非您希望您的文件经常更改,否则您可能只想在开始时读取它们并将内容存储在一个变量中,然后使用它。或者,您可以将您的 open
ing 移动到您的 do_GET
方法中,以便它为每个请求打开它。
我正在尝试弄清楚如何在 Python 中设置基本的 Web 服务器,但我遇到了很多困难。
我的主要问题是我只能让我的服务器为网页提供一次服务。 html 在浏览器中显示一条消息,Javascript 在控制台中显示另一条消息。
当我启动服务器并转到 http://127.0.0.1:8080 时,我的两条消息都会显示,一切正常。但是,当我打开第二个浏览器选项卡并再次访问时,我 运行 遇到了问题。我在终端中收到 GET HTTP 请求,但没有收到 GET Javascript 请求。浏览器 window 或控制台中均未显示任何内容。
我做错了什么?如有任何建议,我们将不胜感激。
这是我的 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()
当您 open
Python 中的文件和 read
其内容时,"file pointer"(即下一个 read
的起始位置)是然后在文件的末尾。您必须重新打开它或倒回到文件的开头才能再次阅读它。
除非您希望您的文件经常更改,否则您可能只想在开始时读取它们并将内容存储在一个变量中,然后使用它。或者,您可以将您的 open
ing 移动到您的 do_GET
方法中,以便它为每个请求打开它。