出站网页请求与响应的接口规范。
源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。
# 网络接口规范 0.1.0 本包定义出站 HTTP 请求,不定义原生套接字、入站监听、浏览器 DOM 或 Cloudflare 绑定。应用依赖本包并不自动获得任意域名的访问权;宿主按本次运行授予的目标范围检查每个请求。 - `网页请求` 的方法限 `GET`、`HEAD`、`POST`、`PUT`、`PATCH`、`DELETE`、`OPTIONS`,网址为绝对 `http:` 或 `https:` URL;网址解析遵循 [WHATWG URL 标准](https://url.spec.whatwg.org/)。标头为有序名称/值对子列表,允许重复名称;无效方法、URL 或标头返回 `输入无效`。 - `发送网页请求` 可以挂起。成功结果持有宿主产生的响应;应用通过具名函数取得状态码、按名称取得标头值们及完整正文字节。HTTP 4xx/5xx 仍属成功取得的响应。传输失败、未获授权或超出宿主公布的资源上限分别以类型化错误返回。宿主不能因请求来源不同而跳过授权检查。 - 首版使用整体正文;不承诺无限大小、流式接收或请求取消。`读取请求正文上限` 与 `读取响应正文上限` 返回本实例宿主实际执行的字节上限,均须为正;超出时返回 `资源配额已尽`。本函数**不跟随 HTTP 重定向**:收到 301、302、303、307 或 308 状态,即以 `宿主操作失败` 返回,不向下一跳发请求;304 等其他状态按普通响应返回。应用不得依赖错误字符串区分重定向与其他传输失败。浏览器适配器可使用 Fetch 的 `redirect: "error"` 行为;[WHATWG Fetch 标准](https://fetch.spec.whatwg.org/)说明浏览器脚本中的手动重定向响应会被不透明过滤,故首版不以它实现可检查下一跳授权的公共语义。若要跟随重定向或移植大文件,后续分别定义明确授权规则与流接口包。 - 标头名称比较不区分 ASCII 大小写;应用不得依赖传输时的标头次序或重复标头保持原样。`读取网页响应标头` 返回该名称的语义值们,缺少时返回空列;值的次序不具跨宿主保证。应用不得依赖禁用或保留浏览器限制的标头。 规范样例须覆盖:二进制正文、重复标头、HTTP 错误状态、授权拒绝、重定向不跟随、无效 URL、超出限额和传输失败。宿主能在发送前据自身授权表确定目标不允许时返回 `未获授权`;浏览器的跨源检查若只在传输后表现为不可区分的网络失败,返回 `宿主操作失败`,不得猜作某个可移植的授权原因。
# 网络接口规范 此包主出站网页之请,不主原生套接、入站监听与各地私绑。法名用大写,址须绝对之 HTTP 或 HTTPS;标头列可重名。发送可挂起,成功之答由宿主造之,应用循具名之术取状态、标头与全正文;四百、五百之状态亦为已得响应,非传输之误。 宿主按本次所授之目的地核每请。首版遇三百一、三百二、三百三、三百七、三百八之转址状态,即返宿主操作失败,不向次址发请;三百四等他态可如常交客。错误之文不得为客跨宿主分支之据。传输败、未授权、额尽各别告之。首版取全正文,宿主明示请与答之字数上限,不许以无穷之大小为常,流、取消与可验权之转址待别包。网址与标头之细约、验例俱见[汉语稿](规范.汉语.md)。