Как ограничить доступ к конкретному каталогу на Python simplehttpserver - PullRequest
0 голосов
/ 31 января 2019

В настоящее время, если я перехожу на "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 голосов
/ 31 января 2019

SimpleHTTPRequestHandler обслуживает стек каталогов ниже каталога, из которого работает сервер.Самое простое решение -

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

перед запуском сервера.Дополнительный бонус: вы можете запустить скрипт из любого места, и он не будет чувствителен к каталогу, из которого он был запущен.

...