Javascript 无法从python服务器读取响应
我正在编写一个简单的python服务器,并使用do_GET通过以下方式返回htmlJavascript 无法从python服务器读取响应,javascript,python,html,Javascript,Python,Html,我正在编写一个简单的python服务器,并使用do_GET通过以下方式返回html from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler class RequestHandler(BaseHTTPRequestHandler): def _writeheaders(self): self.send_response(200) self.send_header('Content-type',
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class RequestHandler(BaseHTTPRequestHandler):
def _writeheaders(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_HEAD(self):
self._writeheaders()
def do_GET(self):
f = open("/full/path/to.html")
self._writeheaders()
self.wfile.write(f.read())
serveraddr = ('localhost', 7070)
srvr = HTTPServer(serveraddr, RequestHandler)
srvr.serve_forever()
在html中有一个
<html>
<head>
<title>myChart</title>
<meta charset="UTF-8">
</head>
<div >
...divs...
</div>
<script>
...js functions...
</script>
<body>
<script src="js/jquery-1.8.2.min.js" type="text/javascript"></script>
</body>
</html>
无论URL是
/
,/index.HTML
,/favicon.ico
,还是(在您的情况下)是/js/jquery-1.8.2.min.js
,您的请求处理程序将提供HTML页面。如果您希望/js/jquery-1.8.2.min.js
再次提供实际的JavaScript文件而不是HTML页面,则需要特别处理,例如:
def do_GET(self):
if self.path == '/js/jquery-1.8.2.min.js':
filename = 'js/jquery-1.8.2.min.js'
else:
filename = 'index.html'
with open(filename, 'r') as f:
self._writeheaders()
self.wfile.write(f.read())
您可能希望对此进行一点更改,以便请求JavaScript文件时提供适当的内容类型:text/JavaScript
标题,而不是内容类型:text/html
,并且标题
返回与GET
一致的标题,等等
此外,如果您开始为大型文件服务,您可能需要考虑使用从文件复制数据到<代码> Surviv.WFiels/Cord>,而不是将整个文件读入内存并将其全部写入。
似乎在第1行的“jQuyY1.82.M.js”文件中有一个“@daveoncode请查看我的更新以获取答案。有没有更好的方法将URL请求映射到do_GET
,比如在Java中,我们使用@RequestMapping('/xxx)
?@pledez:没有使用BaseHTTPServer
模块,没有。也就是说,我不确定您的项目有多复杂,但是,如果它比这更复杂,那么可能值得研究一些提供这种功能的库,例如,似乎是一个相当流行的Python web框架。
def do_GET(self):
if self.path == '/js/jquery-1.8.2.min.js':
filename = 'js/jquery-1.8.2.min.js'
else:
filename = 'index.html'
with open(filename, 'r') as f:
self._writeheaders()
self.wfile.write(f.read())