这是我参与「第五届青训营 」笔记创作活动的第4天
一、本堂课重点内容:
- HTTP协议简介
- HTTP协议的基本结构与发展历程
- 常见场景中的HTTP协议应用
- 在不同的环境中发起HTTP请求
- 知识扩展,了解更多网络通信协议
二、详细知识点介绍:
什么是HTTP
超文本传输协议
应用层协议,基于TCP
请求/响应
简单可扩展
无状态
报文
-
method
GET 获取数据 POST 将实体提交到指定资源,导致服务器上的状态变化或副作用 PUT 用请求有效载荷替换目标资源的所有当前表示 DELETE 删除指定资源 HEAD 请求一个与GET请求的响应相同的响应,但没有响应体 CONNECT 建立一个到有目标资源标识的服务器的隧道 OPPTIONS 用于描述目标资源的通信选项 TRACE 沿着到目标资源的路径执行一个消息环回测试 PATCH 对资源应用部分修改 -
safe
不会修改服务器数据的方法
GET HEAD OPTIONS
-
idempotent(幂等)
同样的请求执行一次与连续执行多次的效果一样,服务器的状态也是一样的,所有safe方法都是idempotent的
GET HEAD OPTIONS PUT DELETE
-
-
状态码
-
1xx:指示信息,表示请求已接收,继续处理
-
2xx:成功,请求已被接收、理解、接受
200 OK:客户端请求成功
-
3xx:重定向,要完成请求必须进行更进一步的操作
301:资源被永久转移到其他URL
302:临时跳转
-
4xx:客户端错误,有语法错误或无法完成
401:unauthorized,请求未授权
404:请求资源不存在
-
5xx:服务器端错误,服务器未能实现合法请求
500:服务器内部发生了不可预期的错误
504:gateway timeout 网关或代理服务器无法在规定时间获得想要的响应
-
-
RESTful API
一种设计风格,representational state transfer
- 每个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP method对服务器端资源进行操作,实现表现层状态转化
-
常用请求头
Accept:接收类型(对标服务器端返回的Content-Type)
Content-Type:用户发送的实体内容的类型
Cookie:有cookie并且同域访问时会自动带上
User-Agent:用户客户端的必要信息,如安卓/ios/pc
-
常用响应头
Set-Cookie:设置和页面关联的cookie,服务器通过这个头部把cookie传给客户端
-
缓存
-
强缓存:若有本地资源,直接使用
-
Expires:时间戳
-
Cache-Control:可缓存性
no-cache:协商缓存验证
no-store:不使用任何缓存
-
max-age:到期时间,单位为秒,存储的最大周期,相对于请求时间
-
must-revalidate:重新验证,一旦资源过期,在成功向原始服务器验证之前,不能使用
-
-
协商缓存:向服务器验证本地资源能否使用
- Etag/If-None-Match:资源的特定版本的标识符,类似指纹
- Last-Modified/If-Modified-Since:最后修改时间
-
HTTP/2
更快、更稳定、更简单
- 帧:最小通信单位
- 消息:与逻辑请求或响应消息对应的完整的一系列帧
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息
- 连接都是永久的,而且仅需要每个来源一个连接
- 流控制:阻止发送方向接收方发送大量数据
HTTPS
经过TSL/SSL加密
对称加密和非对称加密混用
三、实践练习例子:
- 应用场景分析 - 静态资源
- 应用场景分析 - 登录
- HTTP 协议实战 - 浏览器
- HTTP 协议实战 - Node篇
四、课后个人总结:
HTTP协议涉及的概念较多,需要仔细区分。对浏览器环境的应用实战比较陌生,还需要多多练习。