NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
HTTP

HTTP协议及操作 更多...

HTTP 的协作图:

专题

 WebSocket
 WebSocket升级协议实现

class  http_client
 HTTP客户端类 更多...
struct  http_client_response
 HTTP客户端响应结构 更多...
struct  http_client_request
 HTTP客户端请求结构 更多...
class  http_filter
 HTTP过滤器基类 更多...
class  http_filter_chain
 HTTP过滤器链 更多...
class  cors_filter
 CORS跨域过滤器 更多...
class  logging_filter
 日志记录过滤器 更多...
class  static_file_filter
 静态文件服务过滤器 更多...
class  rate_limit_filter
 限流过滤器 更多...
class  authentication_filter
 认证过滤器 更多...
class  http_router
 HTTP路由器类 更多...
class  http_server
 HTTP/HTTPS服务器类 更多...
struct  http_server_request
 HTTP服务器请求结构 更多...
struct  http_server_response
 HTTP服务器响应结构 更多...
struct  http_cookie
 HTTP Cookie结构 更多...
struct  http_session
 HTTP会话结构 更多...

类型定义

using http_request = http_server_request
 HTTP请求类型别名
using http_response = http_server_response
 HTTP响应类型别名

详细描述

HTTP协议及操作

本模块提供了完整的 HTTP/1.1 协议支持,涵盖客户端与服务端消息结构、Cookie与会话管理、 路由分发、中间件过滤器链以及 WebSocket 升级协议。

遵循的国际标准

本实现严格遵循以下 IETF RFC 与相关标准规范:

HTTP/1.1 核心协议:

HTTP 状态码与头字段注册:

HTTP 认证与安全:

Cookie 与会话管理:

CORS 跨域资源共享:

WebSocket 协议:

MIME 类型规范:

HTTP 状态码分类

根据 RFC 9110 §15,HTTP 状态码按百位数字分类:

类别 状态码范围 含义 典型状态码
1xx 100 – 199 信息响应 100 Continue, 101 Switching Protocols
2xx 200 – 299 成功 200 OK, 201 Created, 204 No Content
3xx 300 – 399 重定向 301 Moved Permanently, 302 Found, 304 Not Modified
4xx 400 – 499 客户端错误 400 Bad Request, 403 Forbidden, 404 Not Found
5xx 500 – 599 服务器错误 500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

HTTP 请求方法

根据 RFC 9110 §9,本模块支持以下标准 HTTP 方法:

方法 RFC 引用 语义 幂等性 安全性
GET §9.3.1 检索资源表示
POST §9.3.3 提交数据进行处理
PUT §9.3.4 替换或创建资源
DELETE §9.3.5 删除资源
HEAD §9.3.2 获取 GET 响应的头部
OPTIONS §9.3.7 获取服务器支持的方法
TRACE §9.3.8 回显请求(调试用)
CONNECT §9.3.6 建立隧道(用于代理)
PATCH RFC 5789 部分更新资源

Cookie 属性说明

根据 RFC 6265 §4.1,Cookie 支持以下属性:

属性 说明
Domain 指定 Cookie 可用的域名
Path 指定 Cookie 可用的路径前缀
Expires 指定过期时间(绝对时间)
Max-Age 指定有效期(相对秒数),优先级高于 Expires
Secure 仅通过 HTTPS 传输
HttpOnly 禁止 JavaScript 访问,缓解 XSS 攻击
SameSite 跨站请求策略:Strict(禁止跨站)、Lax(允许顶级导航)、None

CORS 响应头

根据 Fetch 标准,CORS 使用以下响应头:

响应头 说明
Access-Control-Allow-Origin 允许访问的源
Access-Control-Allow-Methods 允许的 HTTP 方法
Access-Control-Allow-Headers 允许的请求头
Access-Control-Allow-Credentials 是否允许携带凭证(Cookie)
Access-Control-Max-Age 预检请求结果缓存时间

WebSocket 协议细节

根据 RFC 6455,WebSocket 协议规范:

**握手升级**:

  • 客户端发送 Upgrade: websocketConnection: Upgrade
  • 服务器返回 101 Switching Protocols
  • 使用 Sec-WebSocket-KeySec-WebSocket-Accept 验证握手

**帧结构**(RFC 6455 §5.2):

字段 位数 说明
FIN 1 是否为消息的最后一帧
RSV1-3 3 保留位,用于扩展
Opcode 4 帧类型:Continuation(0)、Text(1)、Binary(2)、Close(8)、Ping(9)、Pong(10)
MASK 1 客户端到服务器的帧必须设置掩码
Payload len 7/7+16/7+64 负载长度
Masking key 0/32 掩码密钥(仅客户端帧)

**关闭状态码**(RFC 6455 §7.4):

状态码 名称 说明
1000 Normal Closure 正常关闭
1001 Going Away 端点离开(如浏览器关闭)
1002 Protocol Error 协议错误
1003 Unsupported Data 接收到不支持的数据类型
1008 Policy Violation 违反策略
1009 Message Too Big 消息过大
1011 Internal Error 服务器内部错误

实现细节

特性 规范参数
HTTP 版本 HTTP/1.1(RFC 9112)
头部字段大小写 不区分大小写,存储为原始大小写
Cookie 解析 支持 Set-Cookie 和 Cookie 头
会话标识符 支持 JESSIONID, SESSIONID, PHPSESSID 等常见名称
路由匹配 支持静态路径、路径参数(:id)、通配符(*)、正则表达式
中间件执行顺序 预过滤 → 核心过滤 → 路由处理 → 后过滤
WebSocket 心跳 周期性发送 Ping 帧,等待 Pong 响应
注解
本模块的 HTTP 解析器严格遵循 RFC 9112 语法规则,支持分块传输编码(chunked) 和 Content-Length 两种方式确定消息体长度。WebSocket 实现完整支持 RFC 6455 定义的控制帧(Ping/Pong/Close)和分片消息。
警告
生产环境中应始终通过 HTTPS 使用 Secure 属性的 Cookie, 并在敏感路由上启用 CSRF 防护。WebSocket 连接应考虑使用 WSS(WebSocket Secure)。
参见
https://www.rfc-editor.org/rfc/rfc9110.html
https://www.rfc-editor.org/rfc/rfc9112.html
https://www.rfc-editor.org/rfc/rfc6265.html
https://www.rfc-editor.org/rfc/rfc6455.html
https://fetch.spec.whatwg.org/