URL 的构成及 URI、URL、URN 的区别

摘要:URI,统一资源标识符,是一个用于标识某一互联网资源名称的字符串。URL,统一资源定位符,是因特网的万维网服务程序上用于指定信息位置的表示方法。URN,统一资源名称,是带有名字的因特网资源。

简介

  • URI:Uniform Resource Identifier,统一资源标识符,是一个用于标识某一互联网资源名称的字符串。
  • URL:Uniform Resource Locator,统一资源定位符,是因特网的万维网服务程序上用于指定信息位置的表示方法。
  • URN:Uniform Resource Name,统一资源名称,是带有名字的因特网资源。
  • URI 是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫 URI,使用两种方法定位:

  • URL,用地址定位,这是目前 URI 的最普遍(流行)形式,Web 上的 URI 基本都是 URL;
  • URN,用名称定位,这是 URL 的一种更新形式,URN 不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。

举个例子:

去村子找个具体的人(URI),如果用地址,某村多少号房子第几间房的主人就是 URL;如果用身份证号 + 名字,去找就是 URN 了。

因此,URL 和 URN 是 URI 的子集。

URL 的构成及 URI、URL、URN 的区别

URL 的构成

URL 遵守一种标准的语法,它由协议、域名、端口、路径名称、查询字符串、以及锚部分这六个部分构成,其中端口可以省略,查询字符串和锚部分为参数。具体语法规则如下:

protocol://host:port/pathname?query#fragment

在上述语法规则中,protocol 表示协议,host 表示主机名(域名或 IP 地址),port 表示端口,pathname 表示路径名称,query 表示查询字符串,fragment 表示锚部分。接下来我们详细看一下这几部分到底是如何使用的。

1) 协议

协议用来指明客户端和服务器之间通信的类型,需要与 URL 的其它部分用 :// 隔开。我们经常用到的协议有四种:http、https、ftp 以及 file,这四种协议的使用场景如下表所示:

协议 使用场景
http 超文本传输协议。http 协议可以将编码为超文本的数据从一台计算机传送到另一台计算机,不进行加密。
https 安全超文本传输协议。以安全为目标的 http 通道,安全网页,加密所有信息交换。
ftp 文件传输协议。用于将文件下载或上传网站。
file 本机上的文件。

2) 主机名

主机名,可以是域名,也可以是 IP 地址。

3) 端口

端口用来定义主机上的端口号。如果不写,http 的默认端口号是 80,https 的默认端口号是 443,ftp 的默认端口号是 21。

4) 路径名称

  • 路径名称分为路径(path)和文件名(filename);
  • 路径指定服务器上文件的所在位置,路径中的相邻文件夹需要使用斜线 / 隔开;
  • 文件名用来定义文档或资源的名称,是路径文件夹中的文件。网页文件名的后缀有很多种,比如 .html、.php、.jsp、.asp 等。

5) 查询字符串

查询字符串不是一个 URL 必须的部分,是客户端把信息传递给服务器的一种方式(也有可能是跳转到某一个页面,把参数值传递给页面用来标识的)。

6) 锚部分

锚部分也不是一个 URL 必须的部分,跟服务器交互没关系,信息不会传递给服务器,主要用于页面中的锚点定位和 HASH 路由切换。

注意

  • URL 只能使用 ASCII 字符集来通过因特网进行发送。由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
  • URL 编码使用 % 其后跟随两位的十六进制数来替换非 ASCII 字符。
  • URL 不能包含空格。URL 编码通常使用 + 来替换空格。

Location 对象

Location 对象包含有关当前 URL 的信息,是 window 对象的一部分,可通过 window.location.xxx 格式的相关属性对其进行访问。

window.location.href // 返回完整的 URL
window.location.protocol // 返回协议
window.location.host // 返回主机名和端口,如端口使用默认,则返回主机名
window.location.hostname // 返回主机名
window.location.port // 返回端口
window.location.pathname // 返回路径名称
window.location.search //  返回查询字符串
window.location.hash // 返回锚部分

也可通过 location.xxx 格式的相关属性对其进行写入。

版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.dedenotes.com/html/url.html
(1)
打赏 微信扫一扫 微信 支付宝 QQ 扫码打赏

防止表单重复提交的 4 种方法

Dedenotes 赞(3)

平时开发的项目中可能会出现下面这些情况:由于用户误操作,多次点击表单提交按钮;由于网速等原因造成页面卡顿,用户重复刷新提交页面;黑客或恶意用户使用 Postman 等工具重复恶意提交表单(攻击网站)。

meta

Dedenotes 赞(3)

meta 是 html 语言 head 区的一个辅助性标签,位于文档的头部,不包含任何内容,标签的属性定义了与文档相关联的名称/值对。meta 标签可提供相关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。

HTTP消息结构 HTTP请求报文和响应报文的格式

Dedenotes 赞(3)

HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等),所有的 WWW(World Wide Web)文件都必须遵守这个标准。