Skip to content

1.0.0

Latest

Choose a tag to compare

@LiuXiu233 LiuXiu233 released this 16 Jul 15:41
0764298

yanxu-http 1.0.0

版本摘要

1.0.0 把早期的一次请求 HTTP 基础库升级为严格、有界、可复用的 HTTP/1.1 服务端协议层。公开契约现在覆盖安全解析、持久连接、分块、表单、Cookie、路由适配与 WebSocket 握手所有权边界。

新功能

  • HTTP限制统一请求行、首部、正文、分块、尾部、Multipart、超时和连接寿命预算;
  • HTTP连接支持 keep-alive、客户端流水线、干净 EOF、临时响应、响应顺序和连接复用判断;
  • 请求与响应支持严格 chunked framing 和尾部;
  • URL 编码表单与 Multipart 保留重复字段和二进制文件;
  • Host、路径、方法与路由视图为上层框架提供稳定输入;
  • Cookie 支持安全前缀、删除、SameSite、Partitioned 和重复请求值;
  • WebSocket 版本 13 握手支持规范接受值、Origin 允许列表、服务器偏好子协议和缓冲字节移交;
  • 生成 API、架构、错误、安全、性能、迁移与贡献文档进入版本库,并由 CI 防漂移。

修复与安全加固

  • 唯一确定 Content-Length 与 Transfer-Encoding 优先级,拒绝所有冲突和模糊组合;
  • 严格验证 CRLF、Host、首部 token、控制字符、块大小、尾部禁用字段和响应 framing;
  • 对解析循环、集合数量和字节分配设置固定或可配置上限;
  • 升级失败或协议失败后不再复用连接;101 无法从普通响应编码器绕过;
  • Cookie 安全属性组合在渲染前统一验证。

兼容性

  • 最低言序:1.1.6;当前稳定验证:1.1.8;
  • 清单格式:2;构建目标:字节码;
  • 直接依赖:无;言据响应只消费调用方已经规范序列化的文字;
  • 支持 Linux、macOS 与 Windows 的纯言序路径;TCP 夹具只使用回环地址;
  • 旧的离线解析、响应工厂、读取请求发送响应入口保留。

破坏性变化

  • 最低言序由 1.1.5 提升为 1.1.6;
  • 请求解析比 0.1 更严格:无 Host、重复关键首部、冲突 framing、非法 Cookie 和非规范输入会被拒绝;
  • 稳定程序错误接口统一为YANXUN_*代码;调用方不应依赖旧展示文字;
  • 持久连接响应必须携带对应请求对象,以保证 HEAD、关闭和顺序语义;
  • 普通HTTP响应不能编码 101,必须使用 WebSocket 升级方法。

迁移

把依赖范围改为^1.0并重新锁定。一次请求应用可以保留旧套接字助手;需要 keep-alive、chunked、流水线或升级时创建HTTP连接。检查更严格的错误分支,并通过错误详情读取代码。完整步骤见 MIGRATION_1.0.md

权限

包只声明127.0.0.1::1localhost的 TCP 监听权限;文件、任意网络、UDP、环境、进程和原生扩展均未申请。顶层应用仍需按实际监听地址声明自己的权限。

已知限制

  • 仅 HTTP/1.1,不含 TLS、HTTP/2、HTTP/3 或代理信任;
  • 请求和响应正文当前在内存中形成完整字节串,没有应用级流式背压;
  • Multipart 不自动落盘或扫描文件;
  • WebSocket 只含握手和原始通道,不含帧、压缩、心跳或关闭协议;
  • IPvFuture Host 未实现。

测试结果

  • 21 个言序源码、规格、示例、负载和集成夹具文件通过当前与最低工具链静态检查;
  • 9 个规格文件在言序 1.1.8 与 1.1.6 的树解释器和字节码 VM 上通过;
  • 测试与解析负载的树/VM 对照全部通过;
  • 真实 TCP 在两套工具链的树解释器与 VM 四种组合中通过,覆盖 103、定长响应、分块请求/响应、流水线和 WebSocket 超前字节;
  • 两套工具链生成的公开 API 完全一致,发布构建均成功;
  • CI 继续在最低工具链上覆盖 Ubuntu、macOS 与 Windows。