Python SimpleHTTPServer 模块

2025年3月17日 | 阅读 7 分钟

服务器是计算机程序或设备,它们在网络上处理请求并向客户端发送数据。存在不同类型的服务器,最常见的是 Web 服务器、数据库服务器、应用程序服务器和事务服务器。

像 Jigsaw、Apache 和 Monkey 这样广泛使用的 Web 服务器在测试简单任务时设置起来很麻烦。开发人员的注意力从开发应用程序逻辑转移到了设置服务器。

Python 的 SimpleHTTPServer 模块是一个有用且简单的工具,开发人员可以将其用于多种用例。最基本的一点是,它是从目录中提供文件的快速方法。

它消除了安装和运行现有跨平台 Web 服务器的繁琐过程。

注意:虽然 SimpleHTTPServer 是一个轻松提供目录中文件的绝佳方法,但不应在生产环境中使用。根据官方 Python 文档,它“仅执行基本的安全检查”。

什么是 HTTP 服务器?

Web 服务器:Web 服务器是一个处理客户端网络请求并向其提供构成网页的文件的程序。此交换使用超文本传输协议(HTTP)进行。

本质上,Web 服务器是用于存储构成网站的 HTTP 文件的计算机,当用户请求特定网站时,它会将请求的网站发送给用户。例如,您想在计算机上打开 Facebook 并将 URL 输入 Google 的搜索栏。您的计算机将发送一个 HTTP 请求,要求查看 Facebook 网页,另一个称为 Web 服务器的计算机。这台计算机(Web 服务器)包含构成网站的所有文件(通常是 HTTP 格式),例如文本、图像、gif 文件等。在处理完请求后,Web 服务器会将请求的网站相关文件发送到您的计算机,然后您就可以访问该网站了。

多个网站可以存储在同一台或不同的 Web 服务器上,但这不会影响您在计算机上实际看到的网站。Web 服务器可以是任何软件或硬件,但通常是运行在计算机上的软件。一台 Web 服务器可以同时处理多个用户,这是一个必需的。但是,每个用户都必须有一个 Web 服务器,考虑到当前的总人口,这几乎是不可能的。Web 服务器永远不能与网络断开连接,因为如果断开连接,它将无法接收任何请求,因此也无法处理它们。

  1. HTTP Web 服务器只是您计算机上运行的进程,它只做两件事
  2. 监听特定 TCP 套接字地址(IP 地址和端口号)上的传入 http 请求
  3. 它处理此请求并向客户端发送响应。
  4. 当您打开 Chrome 浏览器并在地址栏中键入 google.com 时,您将看到 Google 主页渲染到您的浏览器窗口。
  5. 但是,幕后发生了什么?
  6. 发生了许多事情,但为了简单起见,我将省略一些细节,并从非常高的水平进行讨论。
  7. 在较高层面上,当我们在浏览器中搜索 google.com 时,您的浏览器将创建一个名为 HTTP 请求的网络消息。
  8. 此请求(HTTP 类型)将传输到位于其上的 Google 计算机上的 Web 服务器。
  9. 此 HTTP Web 服务器将捕获您的请求,并通过回复 Google 主页的 HTML 来处理它。
  10. 最后,浏览器将此 HTML 渲染到控制台屏幕上,这就是我们在控制台屏幕上看到的。
  11. 之后与 Google 主页的每一次交互(例如,当您单击链接时)都会启动一个新的请求和响应,就像第一次一样。
  12. 重申一下,接收 http 请求的机器上运行着一个称为 Web 服务器的软件进程。
  13. 该 Web 服务器负责正确捕获和处理这些请求。

Python3 SimpleHTTPServer

  1. Python3 SimpleHTTPServer 是一个内置的 HTTP 服务器,您无需安装和配置任何内容。因此,SimpleHTTPServer 是一个非常有用的工具。
  2. 您可以使用 Python SimpleHTTPServer 将任何目录转换为简单的 HTTP Web 服务器。
  3. SimpleHTTPServer 模块附带一个简单的 HTTP 服务器,提供标准的 GET 和 HEAD 请求处理程序。
  4. SimpleHTTPServer 模块可以将您系统中的任何目录转换为 Web 服务器。您只需要在终端中键入一个简单的命令来实现此 HTTP 服务器。
  5. Python SimpleHTTPServer 仅支持两种 HTTP 方法 - GET 和 HEAD。因此,它是通过网络共享文件的绝佳工具。

例如,键入以下命令以 8000 作为默认端口启动服务器。

我们可以通过在命令的参数空格中键入端口号来更改默认端口。

输出

py python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
1270.01
-»06/06/2022 18:49:55] "GET / HTTP/1.1"
200

我们已经在端口 8000 上启动了 Python SimpleHTTPServer。

如果您转到浏览器,它将显示网站页面输出中列出的所有文件和文件夹。

为什么要选择 Python SimpleHTTPServer

  • 轻量级。
  • 函数式编程。
  • 管道链支持。
  • 会话支持,并可以通过此扩展支持分布式会话。
  • 类似 Spring MVC 的请求映射。
  • SSL 支持。
  • WebSocket 支持
  • 易于使用。
  • 自由形式的控制器编写。
  • 易于与 WSGI 服务器集成。
  • 协程模式支持。

No module named SimpleHTTPServer

No module named SimpleHTTPServer 错误是 Python 中的 ModuleNotFoundError。

如果您使用的是 Python3 并尝试启动 SimpleHTTPServer,您将收到类似 No module named SimpleHTTPServer 的错误。

它已合并到 http.server 模块中。您可以使用以下命令在 Python 3 中运行 python http 服务器。

输出

py python3 -m http. server 9000
Serving HTTP on 0.0.0.0 port 9000 (http://0.0.0.0:9000/)
127.0.0.1 -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- [06/Feb/2019 18:53:39]
"GET / HTTP/1.1" 200
127.0.0.1
[06/Feb/2019 18:53:40] code 404, message File not found
127.0.0.1
- - - - - - - - - - - - - - - - - [06/Feb/2019 18:53:40] - - - - - - - - - - - - - - - - - - 
"GET /favicon.io HTTP/1.1" 404

现在,在您启动服务器的服务器目录中创建一个简单的 index.html 文件,并将以下代码写入 index.html 文件中。

源代码

现在,转到浏览器并键入此 URL:https://:9000 查看输出。

输出:您的屏幕可能看起来与下面的图像相似

Python SimpleHTTPServer Module

Python3 HTTP 服务器示例

Python 3 http.server 模块定义了用于实现 HTTP 服务器或 Web 服务器的类。http.server 不推荐用于生产环境。它仅执行基本的安全检查。

我们可以编写服务器代码来创建一个 Web 服务器。

将以下代码写入 app.py 文件中。

好的,现在执行上述文件。然后,在终端中键入以下命令。

输出

如果我们目录中有一个 index.html 文件,服务器将使用该 html 文件进行响应。

我们可以在此链接上查找有关 Python 3 模块 http.server 的更多信息。

Python 模块 http.server 提供了完整的消息。然而,Python 模块(http.server)不会在停止控制台时显示所有 Python 所需的适当模块详细信息,这是一种更简洁的方法。

结论

Python 的 SimpleHTTPServer 模块是一个方便简单的工具,开发人员可以将其用于多种用例。最基本的一点是,它是从目录中提供文件的快速方法。此外,它消除了与安装和运行现有跨平台 Web 服务器相关的繁琐过程。

如果使用的是 Python 2,则以下命令是合适的。

如果使用的是 Python 3,则以下命令是合适的。

服务器提供了一个简单的目录 UI 来访问任何文件。这是最简单的直接通过 HTTP 在本地提供文件的方法。

Python 为我们提供了 SimpleHTTPServer 模块(或 Python 3 中的 http.server),它可以快速有效地通过 HTTP 从本地目录提供文件。这可用于许多开发或其他内部任务,但并非为生产环境设计。

这是本地使用的绝佳解决方案,因为 Apache、Monkey 和 Jigsaw 等 Web 服务器的设置更具挑战性,而且对于开发活动来说,它们通常是多余的。