📄 一句话概括
浏览器解析 URL 的规则只有一条——从协议名后的斜杠开始切:第一个斜杠之前是服务器名,之后全是要访问的路径;端口可以省略,缺省时用 80。
📝 本节和前面几节的关系
1.1.1 说浏览器按协议名选工序;本篇接着讲同一件事的下一刀——把地址切成【找谁】和【要什么】两半。
一、切分规则一条
URL 从协议名后面的 / 开始数:第一个 / 之前是服务器名, 之后的部分全是路径——要访问的对象写在这后半截里。 服务器名后面还可以跟 :端口,写省略时 http 默认 80。
二、路径决定访问对象
/dir1/file1.html 这样的路径说明要取的是哪个文件; 没有路径(只写域名)就是访问根目录——详见下一节省略规则。
三、解析完拿到什么
解析完成后浏览器手里有三样东西:访问方法(协议)、 服务器名(待翻译成 IP)、路径(待写进请求消息)。 本篇解决【对什么】的一半,另一半在 DNS(1.2 节)。
四、动手 Demo:解析器视角过一遍 URL
五种常见写法,让小脚本逐一切给你看:
urls = ['http://www.lab/dir/file.html',
'http://www.lab/dir/',
'http://www.lab:8080/x',
'http://www.lab']
for u in urls:
_, _, rest = u.partition('://')
auth, _, path = rest.partition('/')
host, _, port = auth.partition(':')
print(host, '| 端口', port or '缺省80', '| 路径 /' + path)
实跑输出:
--------------------------------------------------------------------
解析器视角过一遍 URL
--------------------------------------------------------------------
同一台服务器,五种写法,解析结果对比:
输入的 URL 解析出的服务器名 解析出的路径
-------------------------------------------------------------------------
http://www.lab/dir/file.html www.lab /dir/file.html
http://www.lab/dir/ www.lab /dir/(目录)
http://www.lab/file www.lab /file(文件)
http://www.lab:8080/x www.lab(端口 8080) /x
http://www.lab www.lab /(根)
-------------------------------------------------------------------------
规则就一条:从协议名后面的 / 开始数,第一个 / 之前是服务器名,
之后全是要访问的路径——【对什么】已经写明白了。
注意 8080 那行:端口显式写出来时浏览器不再用默认值, 服务器端也要真有程序在 8080 上守着才通。
30 秒实验
- 在地址栏输入一条带 :80 的网址和一条不带的,确认访问结果一样。
- 故意把服务器名里的点去掉一个,看解析会出什么问题。
- 打开开发者工具的网络面板,看第一条请求的完整 URL 长什么样。
常见误区
- 以为服务器名后面的 / 是装饰——它是服务器名和路径的分界线。
- 以为端口随便填都能通——必须服务器端真的有人在那个端口上监听。
自测三问(点开对答案)
1. URL 里第一个斜杠之前的部分是什么? —— 服务器名(可能带端口)。 2. 省略端口时,http 默认用哪个端口? —— 80(https 是 443)。 3. 解析完成后浏览器拿到哪三样东西? —— 访问方法(协议)、服务器名、路径。- ☐ 下一节(1.1.3 省略文件名的情况)
相关笔记
- 什么是URL —— 七块结构展开讲
- 生成HTTP请求消息 —— 解析出的路径马上要用在请求行里
- 🔌 网络是怎样连接的 · 索引