URI 权限

URI 的权限部分位于方案之后、路径之前。它最多可以包含三个部分:用户信息、主机和端口。

语法

url
host
host:port
user@host
user@host:port
主机

主机通常是托管资源的服务器的域名或 IP 地址。域名使用域名系统解析为 IP 地址。

port 可选

端口是一个数字,表示服务器正在监听请求的端口。它是可选的,对于 HTTP 默认为 80,对于 HTTPS 默认为 443。其他方案可能定义自己的默认值或将其设为必需。

user 可选

用户是可选的,用于身份验证目的。在 Web URI 中不常用。

警告:不建议直接在 HTTP URL 中提供用户信息,因为这可能会泄露敏感信息。请使用其他方法,如 HTTP 身份验证或会话 Cookie。有时,网络钓鱼网站会通过显示误导性 URL 来欺骗用户,这些 URL 的“用户”部分看起来像域名,这被称为语义 URL 攻击

描述

考虑以下 URL

url
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

在这种情况下,权限是 www.example.com:80,由主机名(特别是域名)和端口组成。

Domain Name

www.example.com 是 URI 的主机名,指示正在请求哪个 Web 服务器。这里我们使用域名,但也可以使用主机的IP 地址。由于 IP 地址不太方便且更难记住,因此通常使用域名,除非服务器没有注册域名。

Port

:80 是 URL 的端口,指示用于访问 Web 服务器上资源的“技术入口”。如果 Web 服务器使用 HTTP 协议的标准端口(HTTP 为 80,HTTPS 为 443)来授予对其资源的访问权限,则通常会省略它。否则,它是必需的。

示例

https://mdn.org.cn

主机是 developer.mozilla.org。端口未指定,但如果通过 https: 访问,将默认为 443。

https://:8080

主机是 localhost,端口是 8080localhost 是一个特殊的**主机名**,浏览器会将其解析为本地地址 127.0.0.1

postgresql://postgres:admin123@db:5432

主机是 db,端口是 5432。它还指定了用户 postgres 及其密码 admin123。这可用于连接到 PostgreSQL 数据库。

https://cnn.example.com&story=breaking_news@10.0.0.1

一个误导性的 URL,看起来似乎指向一个受信任的网站。然而,主机名是 10.0.0.1,而 cnn.example.com&story=breaking_news 部分是“用户”。

规范

规范
未知规范
# section-3.2

另见