一、URL
浏览器要想发起请求,必须是一个完整的url地址.
URL是一个固定格式的字符串
它表达了:
从网络中 哪台计算机(domain) 中的 哪个程序(port) 寻找 哪个服务(path),并注明了获取服务的 具体细节(path),以及要用什么样的协议通信(schema)
这里面包含了一些细节:
- 当协议是
http
端口为80
时,端口可以省略 - 当协议是
https
端口为443
时,端口可以省略 schema
、domain
、path
是必填的,其他的根据具体的要求填写
二、绝对路径/相对路径
例如:当前页面: https://www.baidu.com/a/b/1.html
绝对路径:
和当前页面的path无关
-
省略协议名
//www.sina.com/a.html
转换成完整路径:https://www.sina.com/a.html -
只指定路径
/a.html
转换成完整路径:https://www.baidu.com/a.html
相对路径:
和当前页面的path密切相关
-
./
定位倒数第一个斜杠
./2.html
转换成完整路径: https://www.baidu.com/a/b/2.html -
../
定位倒数第二个斜杠
../2.html
转换成完整路径: https://www.baidu.com/a/2.html -
不带斜杠
等同./
2.html
转换成完整路径: https://www.baidu.com/a/b/2.html
单页面应用使用的是绝对路径.
三、自动发出请求的能力
当一些事情发生的时候,浏览器会代替用户自动发出http请求,常见的包括:
-
用户在地址栏输入了一个url地址,并按下了回车
浏览器会自动解析URL,并发出一个
GET
请求,同时抛弃当前页面。 -
当用户点击了页面中的a元素
浏览器会拿到a元素的href地址,并发出一个
GET
请求,同时抛弃当前页面。 -
当用户点击了提交按钮
<button type="submit">...</button>
浏览器会获取按钮所在的
<form>
元素,拿到它的action
属性地址,同时拿到它method
属性值,然后把表单中的数据组织到请求体中,发出指定方法
的请求,同时抛弃当前页面。这种方式的提交现在越来越少见了
-
当解析HTML时遇到了
<link> <img> <script> <video> <audio>
等元素浏览器会拿到对应的地址,发出
GET
请求 -
当用户点击了刷新
浏览器会拿到当前页面的地址,以及当前页面的请求方法,重新发一次请求,同时抛弃当前页面。