已解决
Python 简易 HTTP 服务器
来自网友在路上 169869提问 提问时间:2023-11-19 15:42:10阅读次数: 69
最佳答案 问答题库698位专家为你答疑解惑
Python 简易 HTTP 服务器(http.server)
http.server 是 socketserver.TCPServer 的子类,它在 HTTP 套接字上创建和监听,并将请求分派给处理程序。
Python3 内置标准模块。
通过执行如下命令创建一个最简单的 HTTP 服务器:
python -m http.server # 服务器默认监听端口是 8000
python -m http.server 9000 # 支持自定义端口号
python -m http.server --bind 127.0.0.1 # 服务器默认绑定到所有接口,可以通过 -b/--bind 指定地址,如本地主机。
python -m http.server --directory /tmp/ # 服务器默认工作目录为当前目录,可通过 -d/--directory 参数指定工作目录。
python -m http.server --cgi # 可以通过传递参数 --cgi 启用 CGI 请求处理程序:
http.server 也支持在代码中调用,导入对应的类和函数即可。
from http.server import SimpleHTTPRequestHandler
from http.server import CGIHTTPRequestHandler
from http.server import ThreadingHTTPServer
from functools import partial
import contextlib
import sys
import osclass DualStackServer(ThreadingHTTPServer):def server_bind(self):# suppress exception when protocol is IPv4with contextlib.suppress(Exception):self.socket.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, 0)return super().server_bind()def run(server_class=DualStackServer,handler_class=SimpleHTTPRequestHandler,port=8000,bind='127.0.0.1',cgi=False,directory=os.getcwd()):"""Run an HTTP server on port 8000 (or the port argument).Args:server_class (_type_, optional): Class of server. Defaults to DualStackServer.handler_class (_type_, optional): Class of handler. Defaults to SimpleHTTPRequestHandler.port (int, optional): Specify alternate port. Defaults to 8000.bind (str, optional): Specify alternate bind address. Defaults to '127.0.0.1'.cgi (bool, optional): Run as CGI Server. Defaults to False.directory (_type_, optional): Specify alternative directory. Defaults to os.getcwd()."""if cgi:handler_class = partial(CGIHTTPRequestHandler, directory=directory)else:handler_class = partial(SimpleHTTPRequestHandler, directory=directory)with server_class((bind, port), handler_class) as httpd:print(f"Serving HTTP on {bind} port {port} "f"(http://{bind}:{port}/) ...")try:httpd.serve_forever()except KeyboardInterrupt:print("\nKeyboard interrupt received, exiting.")sys.exit(0)if __name__ == '__main__':run(port=8000, bind='127.0.0.1')
server_class:服务器类
handler_class:请求处理类
port:端口
bind:IP
cgi:是否启用 CGI 请求处理程序
directory:工作目录
小型 web 项目在局域网内的预览
项目目录
web:.
├─index.html
index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body>hello world
</body>
</html>
切换到目录 cd web,执行命令 python -m http.server,浏览器地址栏输入 localhost:8000,显示:hello world
对于局域网的其他用户,可通过你的主机 IP + 端口号访问,如你的主机 IP是192.168.0.1,通过网址 192.168.0.1:8000 可以看到 index.html 文件渲染的内容。
在本地浏览器访问远程服务器的端口映射
如果通过 VSCode 连接远程服务器,使用 http.server 开启一个端口后,会自动映射到本地,这样在本地浏览器就能查看和下载远程服务器资源。(除 VSCode 外,其他工具应该也可以实现远程与本地的端口映射)
注意
http.server 只实现了最基本的安全审查,请不要用于生产环境。
查看全文
99%的人还看了
相似问题
- Docker篇之利用docker搭建ftp服务器可实现多用户上传
- 【Vue3】解决Vue打包后上传服务器 资源路径加载错误
- 【史上最细教程】服务器MySQL数据库完成主从复制
- 中间件安全:Apache Tomcat 弱口令.(反弹 shell 拿到服务器的最高控制权.)
- 服务器端请求伪造(SSRF)
- VMware 系列:戴尔服务器配置(格式数据、RAID5、安装ESXI)以及相关问题
- 超详细 | 实验室linux服务器非root账号 | 安装pip | 安装conda
- 腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例
- 推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
- 2.6文件服务器
猜你感兴趣
版权申明
本文"Python 简易 HTTP 服务器":http://eshow365.cn/6-39406-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!