如何限制对Python simplehttpserver的特定目录访问

时间:2019-01-31 17:19:20

标签: python server localhost simplehttpserver

当前,如果我转到“ http://localhost:8035/”,则可以看到并有权访问所有文件,包括根目录,client_files目录和server_files目录(即,我有权访问所有文件,文件夹和所有文件其子目录等)。

目标:我想将文件访问权限限制为仅client_files目录中的文件。有没有办法用我目前的代码做到这一点?

当前目录结构:

enter image description here

当前代码(run_server.py-位于根目录中):

from http.server import HTTPServer, SimpleHTTPRequestHandler

class CORSRequestHandler(SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'GET')
        self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate')
        return super(CORSRequestHandler, self).end_headers()

def func_run_server(url, port):
    httpd = HTTPServer((url, port), CORSRequestHandler)
    httpd.serve_forever()

func_run_server('localhost', 8035)

1 个答案:

答案 0 :(得分:0)

SimpleHTTPRequestHandler为服务器从中运行目录的目录堆栈提供服务。最简单的解决方案是

import os
curD = os.path.dirname(os.path.abspath(__file__))
os.chdir(os.path.join(curD, “client_files”))

在启动服务器之前。额外的好处是:您可以在任何地方运行脚本,并且脚本对启动目录不敏感。