You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的http.server时能否禁用目录列表功能?

实现方式

可以实现该效果,分两种场景处理即可:

场景1:使用Python 3.11及以上版本

官方已经内置了禁止目录列表的启动参数,直接在运行命令中添加--directory-listing off即可:

python -m http.server --directory-listing off

配置后访问没有index.html的目录时,会直接返回403 Forbidden状态码,不会展示目录列表。

场景2:使用Python 3.10及更低版本

低版本没有内置开关,需要自定义请求Handler重写目录列表的生成逻辑,示例代码如下:

from http.server import HTTPServer, SimpleHTTPRequestHandler

class NoDirListHandler(SimpleHTTPRequestHandler):
    def list_directory(self, path):
        # 禁止返回目录列表,返回403状态码
        self.send_error(403, "Directory listing is forbidden")
        return None

if __name__ == "__main__":
    # 可自行修改监听端口
    listen_port = 8000
    server = HTTPServer(("0.0.0.0", listen_port), NoDirListHandler)
    print(f"Serving at http://0.0.0.0:{listen_port}, directory listing disabled")
    server.serve_forever()

将代码保存为custom_server.py后,运行python custom_server.py即可生效。如果需要返回404状态码,只需要将send_error的第一个参数改为404,提示信息改为Page not found即可。

注意:Python自带的http.server仅适合本地开发调试使用,没有做生产环境所需的安全、性能优化,不建议在生产环境直接使用。

内容的提问来源于stack exchange,提问作者user200783

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:36:03