URL统一资源定位符
Uniform Resource Locator,是一个字符串,格式:protocol://hostname:port/path?query#hash
- protocol:协议,例如 http,https
- hostname:主机名。可以是 ip、域名,精准定位计算机
- port:端口号,如果访问的端口号有程序被监听,则计算机会将到达的网络访问交给对应的程序来处理,http 协议默认端口号
80
,https 协议默认端口号443
,精准定位服务器 - path:用于定位服务,若 path 为
/
,则表示根路径 - query:一种特殊格式的字符串,该字符串会交给web服务器处理,主要用于向服务器传递一些信息,格式为
属性名 = 属性值 & 属性名 = 属性值
- hash:一个普通的字符串,在浏览器的地址栏,如果 url 其他位置的信息保持不变,仅变动 hash ,浏览器不会重新访问服务器,因此通常用于不刷新的页面跳转。
绝大部分的客户端都不会把hash发送到服务器
注:
url
仅支持ASCII字符,非ASCII字符,会被现代浏览器自动进行编码url
地址不能过长,很多浏览器对url 地址长度
是有限的,chrome 对 url 的长度限制为 8182 个ASCII字符
http协议
- 请求:客户端通过
url地址
发送数据到服务器的过程 - 响应:服务器收到请求数据后回馈数据给客户端的过程
请求消息格式
- 请求头
request headers
- 请求体
request body
GET和POST请求的差异
- GET请求一般没有请求体,POST请求有
- GET请求的业务数据放在地址中,安全性较差
- GET请求传递的业务数据数量是有限的,POST是无限的(除非服务器限制)
- GET请求利于分享页面结果,POST不行
响应数据格式
在浏览器地址栏中输入一个页面地址,按下回车键后发生了什么??
- 浏览器将 url 地址补充完整:没有书写协议,添加上协议
- 浏览器对 url 地址进行编码:如果 url 地址中出现非 ASCII 字符,浏览器会对其进行编码
- 浏览器构造一个没有消息的 GET 请求,发送至服务器,等待服务器的响应,此时浏览器标签页往往会出现一个等待的图标
- 服务器接收到请求,将一个 HTML 页面代码组装到消息体中,响应给浏览器
- 浏览器拿到服务器的响应后,丢弃掉当前页面,开始渲染消息体的 html 代码,浏览器通过响应头中的 Content-Type 来分辨消息类型
- 浏览器在渲染页面的过程中,发现有其他的嵌入资源,如 CSS、JS、图片等
- 浏览器使用不阻塞渲染方式,重新向服务器发送对该资源的请求,拿到响应结果后根据 Content-Type 做相应处理
- 当所有资源都已下载并处理后,浏览器触发window.onload 事件