这是我参与「第五届青训营」伴学笔记创作活动的第五天
主要内容
-
HTTP 协议简介与发展历程 HTTP/0.9(单行协议) :请求GET/mypage.html、响应只有HTML文档,HTTP/1.0(构建可扩展性):增加了Header、有了状态码、支持多种文档类型等......,HTTP/1.1(标准化协议):增加了链接复用、缓存以及内容协商等......,HTTP/2(更优异的表现):增加了二进制协议、压缩Header、服务器推送等......,HTTP/3(草案)
-
HTTP 协议的基本结构状态码
| 状态码 | 表示意思 |
|---|---|
| 200 OK | 客户端请求成功 |
| 301 | 资源(网页等)被永久转移到其他URL |
| 302 | 临时跳转 |
| 401 Unauthorized | 请求未经授权 |
| 404 | 请求资源不存在,可能是输入了错误的url |
| 500 | 服务器内部发生了不可预期的错误 |
| 504 Gateway Timeout | 网关或者代理的服务器无法在规定时间内获得想要的响应 |
常用请求头
| 请求头 | 表示意思 |
|---|---|
| Accept | 接收类型,表示浏览器支持的MIME类型 |
| Content-Type | 客户端发送出去的实体类内容 |
| Cache-Control | 指定请求和响应遵循的缓存机制,如no-cache |
| if-Modified-Since | 对应服务端的Last-Modified,用来匹配看文件是否变动,精确到1s内 |
| Expries | 缓存控制,在这个时间内不会请求,直接使用缓存 |
| Max-age | 代表资源在本地缓存多少秒,有效时间内不会请求,使用缓存 |
| if-None-Match | 对应服务端的ETag,用来匹配文件内容是否改变 |
| Cookie | 有cookie并且同于访问时自动带上 |
| Referer | 该页面的来源URL |
| Origin | 最初的请求是从哪里发起的 |
| User-Agent | 用户客户端的一些必要信息 |
常用响应头
| 响应头 | 表示意思 |
|---|---|
| Content-Type | 服务器返回的实体内容的类型 |
| Cache-Control | 指定请求和响应遵循的缓存机制,如no-cache |
| Lat-Modified | 请求资源最后修改时间 |
| Expries | 应该在什么时候认为文档已经过期,从此不再缓存它 |
| Max-age | 客户端的本地资源应该缓存多少秒,开启Cache-Control |
| ETag | 资源的特定版本的标识符,Etags类似于指纹 |
| Set-Cookie | 设置和页面关联的cookie |
| Server | 服务器的一些相关信息 |
| Aceess-Control-Allow-Origin | 服务器端允许的请求Origin头部 |
客户端: 主动发起网络请求的一端
服务器: 被动接收网络请求的一端
- 常见场景中的 HTTP 协议应用
使用 curl 工具发送 HTTP 请求并查看响应
使用 Node.js 实现一个简单的 HTTP 服务器
使用浏览器调试工具分析网站的 HTTP 请求和响应
在不同的环境中发起 HTTP 请求
- 知识扩展,了解更多网络通信协议
http2其特点是更快、更稳定、更简单。
- 帧(frame):HTTP/2通信的最小单位,每个帧都包含帧头,至少也会标识出当前帧所属的数据流。
- 消息:与逻辑请求或响应消息对应的完整的一系列帧。
- 数据流:已建立的连接内的双向字节流,可以承载一条或多条消息。