用 C 编写的高性能 Web 服务器,兼具反向代理、负载均衡、API 网关和内容缓存功能。
yhirose/cpp-httplib
一个 C++11 单头文件库,用于构建 HTTP/HTTPS 服务端和客户端,采用阻塞式 socket I/O。
- Star
- 16,923
- Fork
- 2,777
- 未关闭 Issue
- 0
- 最近提交
- 16小时前
这是什么?
cpp-httplib 是一个跨平台的 C++11 库,同时提供 HTTP/HTTPS 服务端和客户端功能。它以单个头文件 httplib.h 发布,项目中只需引入该文件即可使用。库采用阻塞式 socket I/O,仅支持 HTTP/1.1,不实现 HTTP/2 和 HTTP/3。
在服务端方面,它支持带路径参数和正则表达式的路由、静态文件服务及 MIME 类型映射、multipart 表单与文件上传、分块传输和流式内容输出,以及 keep-alive 连接。请求处理前后、异常等环节都可以挂载自定义处理函数。
TLS 可通过编译宏选择 OpenSSL(3.0 及以上)、Mbed TLS 或 wolfSSL。库还提供证书校验配置、双向 TLS(mTLS),并在 macOS 和 Windows 上接入系统证书库。
核心功能
- 01单头文件引入,基础 HTTP 使用无需额外构建依赖
- 02同一个库内同时包含 HTTP 服务端和客户端
- 03支持通过 OpenSSL、Mbed TLS 或 wolfSSL 实现 HTTPS
- 04支持带路径参数和正则表达式的路由
- 05支持静态文件服务、multipart 上传以及分块或流式响应
- 06支持双向 TLS 和证书校验配置
适用场景
- 在 C++ 应用中嵌入轻量级 HTTP 接口,无需引入大型框架
- 编写通过 HTTPS 调用 REST API 的 C++ 客户端
- 在 C++ 工具中提供静态文件或简单 Web API
- 在 C++ 项目中快速搭建本地 HTTP 服务原型
快速上手
- 1
从仓库下载 httplib.h 文件
- 2
在 C++ 代码中包含 httplib.h,并按示例构建服务器或客户端
使用前须知
- 使用阻塞式套接字 I/O,不适合非阻塞设计。
- 仅支持 HTTP/1.1,未实现 HTTP/2 和 HTTP/3。
- 不支持 32 位平台,且未经过安全审查。
标签
常见问题
- cpp-httplib 是什么?
- 一个 C++11 单头文件库,用于构建 HTTP/HTTPS 服务端和客户端,采用阻塞式 socket I/O。 cpp-httplib 是一个跨平台的 C++11 库,同时提供 HTTP/HTTPS 服务端和客户端功能。它以单个头文件 httplib.h 发布,项目中只需引入该文件即可使用。库采用阻塞式 socket I/O,仅支持 HTTP/1.1,不实现 HTTP/2 和 HTTP/3。
- cpp-httplib 可以免费使用吗?用的什么许可证?
- cpp-httplib 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- cpp-httplib 还在维护吗?
- 活跃维护中。cpp-httplib 最近一次提交是在 2026年10月22日。
- cpp-httplib 适合用来做什么?
- 在 C++ 应用中嵌入轻量级 HTTP 接口,无需引入大型框架 编写通过 HTTPS 调用 REST API 的 C++ 客户端 在 C++ 工具中提供静态文件或简单 Web API 在 C++ 项目中快速搭建本地 HTTP 服务原型
- cpp-httplib 怎么安装和运行?
- 从仓库下载 httplib.h 文件 在 C++ 代码中包含 httplib.h,并按示例构建服务器或客户端
- 在哪里获取 cpp-httplib?
- 源代码和安装说明在 GitHub 上:https://github.com/yhirose/cpp-httplib
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Caddy 是一款用 Go 编写的可扩展 Web 服务器,默认自动启用 HTTPS,支持 HTTP/1.1、HTTP/2 和 HTTP/3。
面向 Go 的高性能 HTTP 服务端与客户端实现,注重低内存分配与高吞吐。
纯头文件的 C++ 库,快速且精确地把字符串解析为 float、double 和整数,实现 from_chars 接口。
一个快速、易用、类 Flask 路由风格的 C++ 微框架,用于构建 HTTP 和 WebSocket 服务。
基于 Go 标准库 net/http 构建的高性能、极简 Web 框架。