生态Web 与网络

言讯:HTTP/1.1 服务端协议

使用 yanxu-http 1.0 安全解析请求、管理持久连接,并构造 Cookie、分块与升级响应。

yanxu-http 1.0.0(常用别名http,本文称“言讯”)是严格 HTTP/1.1 服务端协议库。 它负责请求解析、响应编码和连接状态,不负责路由、中间件、TLS 或应用并发。

安装

最低言序为 1.1.6:

yanbao add http --version '^1.0'
yanbao install
[依赖]
http = { 包 = "yanxu-http", git = "https://github.com/yanxulang/yanxu-http.git", 修订 = "v1.0.0", 版 = "^1.0" }

离线解析与响应

引「包:http」为 HTTP;
引「标准:字节」为 字节;

定 请求 为 HTTP.解析请求(
    「POST /search?q=言序&q=web HTTP/1.1\r\nHost: localhost\r\nContent-Length: 6\r\nCookie: theme=dark」,
    字节.从文字(「正文」)
);

言 请求.方法;
言 请求.路径;
言 请求.查询全部(「q」);
言 请求.Cookie值(「theme」);

定 响应 为 HTTP.JSON响应({「ok」:真})
    .设首部(「cache-control」,「no-store」)
    .添Cookie(HTTP.Cookie(「sid」,「opaque」).设安全(真).设同站(「Lax」));

定 线上字节 为 响应.编码();

首部名称按大小写不敏感处理,查询和表单保留重复值。响应编码器独占长度、分块、连接和 Set-Cookie首部,并拒绝 NUL、CR、LF 注入。

资源预算

定 限制 为 HTTP.限制()
    .设读取(3000,4096,32768,1048576)
    .设首部项(64,8192,32)
    .设分块(512,1024)
    .设Multipart为(32,4096)
    .设会话(50)
    .验证();

限制覆盖读取超时、请求行、首部区、单首部、正文、分块、尾部、Multipart 和单连接 请求数。冲突Content-Length、同时出现长度与传输编码、模糊编码、非法 Host 和走私形状 都会在应用处理器之前失败。

持久连接

定 会话 为 HTTP.连接会话为(连接,限制);

试 则
    当 真 则
        定 请求 为 会话.读取下一请求();
        若 (请求 是 空) 则 断;终
        会话.发送响应(请求,HTTP.JSON响应({「path」:请求.路径}));
        若 非 会话.可复用() 则 断;终
    终
救 所误 则
    言 HTTP.错误详情(所误)【「代码」】;
终

会话.关闭();

会话顺序处理 keep-alive 和流水线请求,保留超前读取字节,并支持临时 1xx、定长或分块 响应。达到预算、请求或响应要求关闭、对端结束时不再复用。

表单、Cookie 与升级

  • URL 编码表单把名称映射到值列。
  • Multipart 保留项顺序、重复字段、首部与文件字节,不自动落盘。
  • Cookie 支持__Host-、__Secure-、SameSite、Partitioned 和删除语义。
  • WebSocket 边界验证 RFC 6455 版本 13、Origin 与子协议,并移交套接字和已缓冲字节。
  • 升级通道不解析 WebSocket 帧、扩展、压缩或关闭握手。

权限、错误与限制

库清单只声明回环 TCP 监听;部署应用必须在自己的清单授权实际地址。库不申请文件、 出站网络、UDP、环境、进程或原生扩展权限。

稳定错误使用YANXUN_*代码,可通过HTTP.错误详情读取。1.0 不实现 TLS、HTTP/2、 HTTP/3、可信代理、并发调度、速率限制或应用背压;Multipart 是有界内存解析器。

仓库与完整协议文档:yanxulang/yanxu-http, 1.0.0 Release。需要路由和 中间件时继续阅读言枢。