Url

How

中文域名会如何编码?为什么会出现 xn-- 的字样?

中文网址编码是一种将中文域名转换为英文域名的方法,它使用了一种叫做 Punycode 的算法。Punycode 是一种将 Unicode 字符串编码为 ASCII 字符串的方式,它使用了 xn— 前缀和一些数字和字母来表示原始的 Unicode 字符串,因为 DNS 不支持 Unicode。例如,中文网址 编码.com 的 Punycode 编码是 xn–fiqz59cpva341l.com。这样做的目的是为了让不支持 Unicode 的浏览器和服务器能够识别和访问中文域名 1 encoding chinese

more via: https://github.com/mingyun/mingyun.github.io/blob/master/Characterencoding.html

What

URL 的构造?

URL 由几个部分组成,这些部分一起定义了资源的地址和用于访问它的协议。让我们解析下面的 URL 作为例子

  https://example.logto.io:8080/blogs/index.html?param1=value1&param2=value2#introduction
  • Scheme: 指定了用于访问资源的协议或方案,如 HTTP (超文本传输协议)、HTTPS (安全的 HTTP )、FTP (文件传输协议)或 其他
    • 此 URL 中的 scheme 是 https
  • Host: 主机指定了托管资源的服务器的域名或 IP 地址。
  • Port: (可选)端口表示在主机上访问资源的特定端口号。如果没有指定端口,它默认为给定方案的标准端口。
    • HTTP 的默认端口是 80 ,而 HTTPS 的默认端口是 443 。
    • 此 URL 中的 port 是 8080
  • Path: (可选)路径指示服务器上资源所在的特定位置或目录,可以包括目录和文件名。
    • 此 URL 中的 path 应为 /blogs/index.html
  • Query parameters: (可选)查询参数是传递给资源的额外参数,通常用于动态网络应用。它们出现在路径之后,由 ? 符号分隔。
    • 此 URL 中的 query parameters 是 params1=value1&param2=value2,通常以键值对的形式表示,对之间由 & 符号分隔。在实际使用场景中,通常需要编码以避免空格等字符。
  • Fragment identifier: (可选)它也可以被称为锚,用于定位资源中的特定位置。

via: https://www.v2ex.com/t/1050461

Footnotes

  1. https://stackoverflow.com/questions/9724379/xn-on-domain-what-it-means