要限制对Python simplehttpserver的特定目录访问,可以通过自定义处理程序来实现。以下是一种可能的解决方案:
import os
import sys
from http.server import SimpleHTTPRequestHandler
from socketserver import TCPServer
class CustomRequestHandler(SimpleHTTPRequestHandler):
def translate_path(self, path):
# 获取请求的目录路径
full_path = super().translate_path(path)
# 检查目录路径是否在允许访问的范围内
allowed_dirs = ['/path/to/allowed_dir1', '/path/to/allowed_dir2']
if not any(full_path.startswith(allowed_dir) for allowed_dir in allowed_dirs):
# 如果目录路径不在允许访问的范围内,返回403 Forbidden错误
self.send_error(403, "Forbidden")
return None
return full_path
在上述代码中,可以通过修改allowed_dirs
列表来指定允许访问的目录路径。如果请求的目录路径不在允许的范围内,将返回403 Forbidden错误。
def run_server():
try:
server_address = ('', 8000) # 设置服务器地址和端口
httpd = TCPServer(server_address, CustomRequestHandler)
print('Server started on port 8000...')
httpd.serve_forever()
except KeyboardInterrupt:
print('Server stopped.')
run_server()
函数来启动服务器:if __name__ == '__main__':
run_server()
现在,只有在allowed_dirs
列表中指定的目录路径下的文件和目录才能被访问。如果尝试访问其他目录,将返回403 Forbidden错误。
请注意,这只是一种简单的实现方式,可能还有其他更复杂的方法来限制对特定目录的访问。具体实现方式可能因应用场景和需求而有所不同。
领取专属 10元无门槛券
手把手带您无忧上云