概述
URL的概念
URL,Uniform Resource Locator,统一资源定位符,它是一个网页的关键概念,它是浏览器使用的机制来检索Web上的任何已发布的资源。
一个网址无非是一个给定的独特的资源在网络上的地址。在理论上,每个有效的网址指向一个独特的资源。这些资源可以是一个HTML页面,一个CSS文件,图像,等等。在实践中,也有一些例外,最常见的是一个URL指向不再存在或已移动的资源。作为由Web服务器表示的资源和网址本身是由Web服务器处理的,它是由Web服务器的所有者来仔细管理该资源及其相关的网址。
URI、URL与URN
- URI:Uniform Resource Identifier,统一资源标识符;
- URL:Uniform Resource Locator,统一资源定位符;
- URN:Uniform Resource Name,统一资源名称。
URL 与 URN 是 URI 的子集,它们之间的关系如下图。
URL的组成
下面几个是简单的 URL:
http://ursb.me
http://ursb.me/archives/
http://ursb.me/archives/search?q=URL
任何这些网址可以输入到您的浏览器的地址栏,告诉它加载相关联的页面与资源。
一个网址是由不同的部分组成,一些是强制性的和还有一些是可选的。接下来通过这个 URL 距离说一下各部分的含义与作用:
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
协议(Protocol)
http://
是协议部分,表示浏览器使用 HTTP 协议对 URL 进行处理。当然还有其他的协议,如mailto://
代表的是使用邮件客户端打开,ftp://
则是使用 FTP 协议。
域名(Domain Name)
www.example.com
是一个域名,也可以使用 IP 地址。浏览器直接指向域名所在的 Web 服务器。
端口(Port)
:80
是端口。它表示用于访问 Web 服务器上的“gate”。通常如果 Web 服务器使用 HTTP 协议,端口可以省略(HTTP 默认 80 端口,HTTPS 默认 443 端口)。
文件路径(Path to the file)
/path/to/myfile.html
是 Web 服务器上的资源路径。在 Web 的早期,一个像这样的路径表示 Web 服务器上的物理文件位置。如今,它主要是一个抽象的Web服务器处理,没有任何物理现实。
参数(Parameters)
?key1=value1&key2=value2
提供 Web 服务器的额外参数。这些参数是&
分隔的键/值对的列表。在返回资源之前,Web 服务器可以使用这些参数做额外的工作。每个 Web 服务器都有自己的有关参数的规则,而唯一可靠的方法来知道一个特定的 Web 服务器是否处理参数是通过询问 Web 服务器所有者。
锚点(Anchor)
#SomewhereInTheDocument
叫做锚。它可以标记出以获取资源中的子资源,也就是该文档的某一个位置。
相对路径
Absolute URLs vs relative URLs
绝对地址
-
Full URL (the same as the one we used before)
https://developer.mozilla.org/en-US/docs/Learn
-
Implicit protocol
//developer.mozilla.org/en-US/docs/Learn
在 HTML 的一些标签的
src
属性中比较常用,是一种省去协议部分的简写形式。 -
Implicit domain name
/en-US/docs/Learn
在 UNIX 系统中的文件查找中也经常用到,首部的
/
代表根目录。
相对地址
-
Sub-resources
Skills/Infrastructure/Understanding_URLs
因为该地址不是以
/
打头的,所以浏览器将试图在一个包含当前资源的子目录中找到该文档。其等价于./Skills/Infrastructure/Understanding_URLs
,即在首部加上./
是一样的效果。 -
Going back in the directory tree
../CSS/display
../
在 UNIX 系统中经常用到,代表返回目前位置的上层目录。
相对 URL 的解析方式
首先先明确两个概念:相对 URL 与 基础 URL。
- 相对 URL:不完整的 URL。
- 基础 URL:必须要有一个参考点的 URL。
相对 URL 的解析具体分为以下两步:
-
找到基础 URL
-
将相对URL转换成绝对URL
原文:《URL》(From 《Before Coding》)