HTTP实用指南
01.初始HTTP
当我们在浏览器地址栏输入一个网址或者关键字,它会给我们跳转到对应的网页,在这一过程中,内部到底是怎么运作的?
总结上述图片过程,用流程图来表示,如下:
处理输入信息 → 发起请求 →服务器接收请求 →浏览器读取服务器的响应 →DOM树 CSS树渲染 →页面加载完成
HTTP在计算机网络的层次结构上,属于应用层。底层是基于TCP的。
什么是HTTP?
HTTP全称为超文本传输协议。总结下来,就是如下特点:
- 无状态
- 应用层协议,基于TCP协议
- 简单可扩展(可以设置请求头之类的)
- 请求 响应
02.HTTP协议分析
HTTP发展历程:
HTTP/2在2015年,68%的公司都采用了。
报文
Requests method方法
GET | 请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据 |
---|---|
POST | 用于将实体提交到指定的资源,会修改服务器那边的状态。典型应用:注册账号,修改密码 |
PUT | 用请求的信息替换目标资源的当前信息 |
DELETE | 删除指定的资源 |
HEAD | 请求一个和GET请求的响应相同的响应,但没有响应体 |
CONNECT | 建立一个到由目标资源标识的服务器的隧道 |
OPTIONS | 用于描述目标资源的通信选项 |
TRACE | 沿着目标资源的路径执行一个消息环回测试 |
PATCH | 用于对资源应用部分的修改 |
在我们前端开发的过程中,用的比较多的已经用高亮部分表示出来了。
上述大致可以自身特点分为两类:
Safe: 不会修改服务器那边的数据 GET HEAD OPTIONS
幂等:==同样的请求被连续执行一次和执行多次==的效果都是一样的。服务器的状态也是一样的 GET HEAD OPTIONS PUT DELETE。
状态码
- 1**:指示信息,表示请求已经接收,需要继续处理,所以一般不会以1开头
- 2**:成功,表示请求已经被成功接收,理解,接受 。例如 200 OK - 客户端请求成功
- 3**:重定向,要完成请求必须进一步的操作。301 资源被永久转移到其它URL 302 临时跳转
- 4**:客户端错误,请求有语法错误或者请求无法实现。 401 没有授权 404 资源找不到
- 5**:服务器错误,服务器未能实现合法的请求。 500 服务器内部发生了不可预期的错误。
REST ful 接口风格
常用请求头
因为HTTP是无状态的,唯一让它有状态的处理方法就是Cookie
User-Agent 常用于获取用户是PC 移动 还是Android
常用响应头
缓存
分为强缓存和协商缓存
协商缓存通过对比Last-Modified/if-Modified-Since的时间,看文件是否更新。从而决定是否使用缓存。
浏览器的缓存调用机制
cookie
JavaScript有些获取cookie的api。HttpOnly可以避免这个情况发生。
HTTP/2
更快,更简单,更稳定。
HTTPS
加密。但这个加密的时间需要一定的时间损耗。
3.场景分析
案例一:
状态码200一定是发送了请求吗?还有可能是来自本地的缓存。
案例二:
如何更高地去提交用户体验:
案例三:
对于聊天室这样要求实时通信的情况下,我们HTTP已经不能满足要求了。需要使用webSocket—浏览器与服务器进行双向的动作。