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