文章目录
- URL
- Scheme
- Authority
- Path to resource
- Parameters
- Anchor
- URL和URI
- 参考
URL
以下是 URL 的一些示例:
https://developer.mozilla.org
https://developer.mozilla.org/en-US/docs/Learn/
https://developer.mozilla.org/en-US/search?q=URL
这些 URL 中的任何一个都可以输入到浏览器的地址栏中,以告诉它加载关联的页面(资源)
一个 URL 由不同的部分组成,一些是必需的,另一些是可选的。最重要的部分在下面的 URL 中突出显示
你可能会将 URL 想象成一个普通的邮政邮件地址:Schema代表您要使用的邮政服务,Domain Name是城市或城镇,Port就像邮政编码;Path代表邮件应该投递的建筑物;Parameters表示额外信息,例如建筑物中的公寓号;最后,Anchor代表您将邮件发送给的实际人
Scheme
URL 的第一部分是Scheme,表示浏览器请求资源必须使用的协议(协议是在计算机网络中交换或传输数据的一组方法)。通常网站的协议是 HTTPS 或 HTTP(它的不安全版本)。寻址网页需要这两者之一,但浏览器也知道如何处理其他Scheme,例如 mailto:(打开邮件客户端),所以如果看到其他协议,请不要感到惊讶
Authority
接下来是Authority,它通过字符模式 : // 与Scheme分开。如果存在,Authority包括Domain(例如 www.example.com)和Port (80),用冒号分隔:
- Domain表示正在请求哪个 Web 服务器,通常这是一个域名,但也可以使用 IP 地址(但这种情况很少见,因为它不太方便)。
- Port:相当于一种数据的传输通道,用于接受某些数据,然后传输给相应的服务,电脑将这些数据处理后,再将相应的回复通过开启的端口传给对方(因为IP地址与网络服务的关系是一对多的关系,实际上因特网是通过IP地址加端口号来区分不同的服务)
Scheme和Authority之间的分隔符是://。冒号将 scheme 与 URL 的下一部分分开,而 // 表示 URL 的下一部分是Authority。
Path to resource
/path/to/myfile.html
是 Web 服务器上资源的路径。在 Web 的早期,这样的路径表示 Web 服务器上的物理文件位置。如今,它主要是 Web 服务器处理的抽象表示,没有任何物理意义。
Parameters
?key1=value1&key2=value2
是提供给 Web 服务器的额外参数。这些参数是用 & 符号分隔的键/值对列表。 Web 服务器可以使用这些参数在返回资源之前做额外的事情。每个 Web 服务器都有自己的参数规则,要了解特定 Web 服务器是否正在处理参数,唯一可靠的方法是询问 Web 服务器所有者。
Anchor
\#SomewhereInTheDocument
是资源本身另一部分的Anchor。Anchor代表资源内的一种“书签”,为浏览器提供指示以显示位于该“书签”位置的内容。例如,在 HTML 文档中,浏览器将滚动到定义Anchor的位置;在视频或音频文档上,浏览器将尝试转到Anchor代表的时间。值得注意的是,# 之后的部分,也称为片段标识符,永远不会随请求一起发送到服务器。
URL和URI
统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。 拿人做例子,假设这个世界上所有人的名字都不能重复,那么名字就是URI的一个实例,通过名字这个字符串就可以标识出唯一的一个人。 现实当中名字当然是会重复的,所以身份证号才是URI,通过身份证号能让我们能且仅能确定一个人。 那统一资源定位符URL是什么呢。也拿人做例子然后跟HTTP的URL做类比,就可以有:
动物住址协议://地球/中国/湖南省/长沙市/岳麓区/麓山南路2号/某大学/某公寓/某寝室/张三
可以看到,这个字符串同样标识出了唯一的一个人,起到了URI的作用,所以URL是URI的子集。URL是通过描述人的位置来唯一确定一个人的。在上文我们用身份证号也可以唯一确定一个人,对于这个在湖南的张三(嘿嘿,张三老师11月20日在学校开了一场讲座),我们也可以用身份证号:123456789来标识他。所以不论是用定位的方式还是用编号的方式,我们都可以唯一确定一个人,都是URI的一种实现,而URL就是用定位的方式实现的URI
回到Web上,假设所有的HTML文档都有唯一的编号,记作html:xxxx,xxxx是一串数字,即HTML文档的身份证号码,这个能唯一标识一个HTML文档,那么这个号码就是一个URI
而URL则是通过描述哪个主机上哪个路径上的文件来唯一确定一个资源,也就是定位的方式实现的URI
有一种说法:URI更像是接口,制定标准;URL像是实现类,通过具体的方法实现细节功能
参考
1、What is a URL?
2、URL和URI的区别
3、HTTP 协议中 URI 和 URL 有什么区别?