#文件服务器 #http 文件 #本地 #HTML #部署 #响应 #无依赖

bin+lib httpserv

一个用于本地 HTML 开发的微型、无依赖文件服务器

11 个版本 (4 个稳定版)

1.0.3 2020 年 1 月 26 日
1.0.2 2020 年 1 月 13 日
1.0.0 2019 年 12 月 13 日
0.6.1 2019 年 10 月 28 日
0.5.1 2019 年 9 月 29 日

#811HTTP 服务器

BSD-3-Clause

20KB
514

httpserv

httpserv 是一个微型、无依赖的 HTTP 文件服务器,用于 HTML 的本地开发。它不是最快的,也不是最小的可执行文件,也不是功能最丰富的,但它部署起来极其简单,几乎只做一件事,那就是通过 HTTP 服务器提供你命名的文件。具体来说,它只做以下几件事:

  • 解析 URL 以找到本地文件路径
  • 确保 URL 中不包含 ..
  • 如果该文件路径指向一个目录,则添加 /index.html
  • 使用扩展名来确定 Content-Type
  • 发送文件

由于其简单性,安装、启动和响应都非常快

计划中的任务可以在 问题中查看

计划不包括的功能

  • 默认情况下没有依赖项(在功能门后面是可以的)
  • 在会牺牲易用性或设置速度的情况下最大化响应速度
  • 任何会给 httpserv 产生明显延迟的东西
  • 任何针对更好的生产适用性的东西

安装

cargo install httpserv

这就是全部了。假设 Cargo 的 bin 目录已添加到您的路径中,您现在可以从命令行调用 httpserv。有关安装 Cargo 的说明,请参阅 rustup.rs

在 WSL 上,您可能需要根据您是否在 Windows 或 WSL 端安装了 Rust 来调用 cargo.exehttpserv.exe

用法

所有参数都是可选的 -- 如果您想以默认映射在 localhost:8080 上提供您的当前目录,您只需输入 httpserv 并按回车键。否则

httpserv [directory] [listen] [mappings...]
  • directory:查找要服务的文件的目录。默认为.
  • listen:监听的宿主/端口,这是对SocketAddrFromStr实现的期望。默认为localhost:8080
  • mappings...:除了默认值之外,任何从文件扩展名到MIME类型的额外映射。此处指定的任何内容,如果与默认扩展名匹配,将覆盖默认MIME类型。格式为extension=MIME,扩展名前没有.

已知问题

因为这个工具是为本地开发而不是生产使用而设计的,所以有些问题我没有费心去修复。总的来说,原因在于httpserv是为辅助本地开发而设计的。如果你在任何无法随意重新启动它的场合使用它,你做得非常,非常不对。

  • 过长URL或过多数量的请求头可能会使进程挂起或崩溃
  • 请求是串行处理的,所以如果一次性收到足够多的请求,一些请求可能需要一段时间才能得到响应;然而,解析任何单个请求的时间非常快,所以通常不是问题
  • 如果在发送HTTP头部和发送剩余正文之间文件被修改,则报告的Content-Length将是不正确的,所以浏览器可能会截断内容或显示错误。
  • 恶意用户可能会发送部分请求(例如,永不结束头部)并锁定服务器。

无运行时依赖