直至正文
豫言包府
← 众包

豫言操作系统网址定位 0.2.0

豫言 · 库

按 URL 标准解析绝对网址及相对网址,返回完整部件。

网址定位之约 0.2.0

解析绝对网址部件 受绝对 http: 或 https: 址;根据根址解析网址部件 受待析文与绝对 HTTP(S) 根址。二术循 WHATWG URL 之规析之、规其径与源,返 JSON 物文,字段依序而定,皆为文:href、origin、pathname、search(0.1.0 已有),及 0.2.0 所增之 protocol(含末冒号,如 https:)、hostname(不含端口,小写,国际化域名作 punycode)、host(含非默认端口)、port(默认端口或无端口则空文)、username、password(皆百分号编码后之文,无则空)、hash(含首 #,无则空)。search 无片段,有查询则含首 ?,无则空。诸字段皆取自析后之 URL 物,故与浏览器 URL 同名之性逐字相同。

坏址、非 HTTP(S) 或根非绝对,则败;自 0.2.0 起,此诸败皆为可捕之事故,不复令宿主之异越过 Wasm 之界。辞曰:「网址不是有效的绝对网址」「网址不是 HTTP(S)」「根网址不是有效的绝对网址」「根网址不是 HTTP(S)」「网址无法按根网址解析」(结果之方案非 HTTP(S) 者,辞曰「网址不是 HTTP(S)」)。所入之文可含控字符与任意 UTF-8,宿主依 URL 之规去其制表与换行,余字百分号编码。

此包惟析址,不授所得址之联网权;客用其果前,仍须验源、根径与业务号。username 与 password 露址中之凭据,客不宜书于日志。今 _start 以 JSON 文传部件,后可易豫言记录型而不改 URL 之义。

一致之例

| 入 | 必见 | | --- | --- | | https://user:pw@Example.COM:8443/a/../b%20c?x=1#f | hostname 为 example.com,host 为 example.com:8443,port 为 8443,username 为 user,password 为 pw,pathname 为 /b%20c,hash 为 #f | | http://a.example:80/x | port 为空文,host 为 a.example | | 根 http://h.example:8080/a/b/c,入 ../x?y=1#z | href 为 http://h.example:8080/a/x?y=1#z | | ftp://a.example/、/rel、http:// | 败,可捕 |

所不为

不发网请,不析非 HTTP(S) 之方案,不定可访之源与径。

补:长度之限与首 BOM(独立审后修订)

  • 解析类诸术之入参逾六万五千五百三十六字节者返(阴,空),余术抛可捕之「网址文字超过 64 KiB」,宿主交换缓冲溢出之错不复穿出。
  • 文授宿主 TextDecoder 用 ignoreBOM: true:文首之 U+FEFF 存之,不复暗弃而使无效之址变有效。

所赖

观包之制

上传之记

今修订:1 ·

  1. 修订 1
    取 ZIP

包之层级

父:豫言操作系统接口

无子包。