阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js URL 中的百分号编码

      Node.js URL 中的百分号编码

      允许URL只包含一定范围的字符。 任何超出该范围的字符都必须进行编码。 如何对这些字符进行编码,以及哪些字符要编码完全取决于字符在URL结构内的位置。

      遗留的接口

      在遗留的API中,空格(' ‘)及以下字符将自动转义为URL对象的属性:

      < > " ` \r \n \t { } | \ ^ '
      

      例如,ASCII 空格字符(’ ‘)被编码成 %20。 ASCII 斜杠字符(/)被编码成 %3C。

      WHATWG 接口

      WHATWG URL Standard使用比遗留的API更具选择性和更精细的方法来选择使用的编码字符。

      WHATWG算法定义了三个“百分比编码集”,它们描述了必须进行百分编码的字符范围:

      • C0 control percent-encode set(C0控制百分比编码集) 包括范围在U+0000 ~ U+001F(含)的代码点及大于U+007E的所有代码点。

      • path percent-encode set(路径百分比编码集) 包括 C0 control percent-encode set(C0控制百分比编码集) 的代码点 及 U+0020, U+0022, U+0023, U+003C, U+003E, U+003F, U+0060, U+007B, 和 U+007D 的代码点。

      • userinfo encode set(用户信息编码集) 包括 path percent-encode set(路径百分比编码集) 的代码点 及 U+002F, U+003A, U+003B, U+003D, U+0040, U+005B, U+005C, U+005D, U+005E, 和 U+007C 的代码点。

      userinfo percent-encode set(用户信息百分比编码集) 专门用于用户名和密码部分的编码。path percent-encode set(路径百分比编码集) 用于大多数URL的路径部分编码。C0 control percent-encode set(C0控制百分比编码集) 则用于所有其他情况的编码,特别地包括URL的分段部分,特殊条件下也包括主机及路径部分。

      当主机名中出现非ASCII字符时,主机名将使用Punycode算法进行编码。然而,请注意,主机名可能同时 包含Punycode编码和百分比编码的字符。例如:

      const { URL } = require('url');
      const myURL = new URL('https://%CF%80.com/foo');
      console.log(myURL.href);
        // 输出 https://xn--1xa.com/foo
      console.log(myURL.origin);
        // 输出 https://π.com
      

      更多内容请参考:Node.js URL,或者通过 点击对应菜单 进行查看;


      目录
      目录