[英]Python http.server - how to serve HTML from directory above cwd
我有一个问题,我真的可以使用一些指导。 我只是想从与服务器本身不同的目录中提供 HTML 。 理想情况下,我想将服务器目录上移一层,并提供位于那里的文件。
当我尝试这样做时,我得到了 404。
class Server(SimpleHTTPRequestHandler):
def do_GET(self):
... some other stuff ...
elif self.path == "/manage":
self.send_response(200)
self.path = "/manage.html"
return SimpleHTTPRequestHandler.do_GET(self)
else:
f = self.send_head()
if f:
try:
self.copyfile(f, self.wfile)
finally:
f.close()
^此代码提供文件,如果它与服务器位于同一目录中。
如果我然后将 manage.html 向上移动(我希望它存在的地方),并尝试诸如“../manage.html”之类的东西或绝对路径,我会得到 404。
我是否遇到了一些内置的目录遍历缓解措施? 如果是这样,有没有办法可以禁用它? 所有这些都是本地的,安全性并不是真正的问题。 我可以尝试一个子目录,但如果我从那条路开始,我必须重命名和重新排列整个目录结构,因为命名没有意义。
提前致谢。 (Python 3.10,2) 64 位。 视窗。
这是一项安全功能。 您不希望用户能够看到 web 服务器的所有文件,对吗?
从 Python 3.7 开始, SimpleHTTPRequestHandler
的构造函数有一个directory
参数(参见文档: https://docs.Z23EEEB4347BDDhttp26BFC6B7EE9A3B755DDZ.org/3/libr
有了它,您可以告诉SimpleHTTPRequestHandler
从哪里服务器文件。 您可以在实例化服务器的任何位置进行更改,即Server(directory=...)
或者您可以更改服务器 class 的 init 方法
class Server(SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super().__init__(*args, directory=..., **kwargs)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.