这是我参与「第四届青训营 」笔记创作活动的的第8天,整理一下之前课上关于 HTTP 的相关知识。
一、本节课重点内容
- 什么是 HTTP
- HTTP 报文包含哪几部分内容
- 在实际场景中如何完成 HTTP 请求和对网络进行优化
二、详细知识点介绍
1. 从在浏览器中输入网址到页面显示,中间发生了什么?
2. 什么是 HTTP
Hyper Text Transfer Protocol(超文本传输协议)
- 应用层协议,基于 TCP 协议
- 分为请求和响应两部分
- 简单可扩展
- 无状态
3. 报文分析
- 请求方法:
OPTIONS 常用于在跨域请求的场景下对服务器进行预请求,获知服务器是否允许该跨域请求
-
状态码:
- 1xx:服务器收到请求,但需要请求者继续执行操作
- 2xx:操作被成功接收并处理
- 3xx:重定向,如 301 表示资源被永久转移到其它 URL,302 表示临时重定向
- 4xx:客户端错误,如 401 表示需要用户完成身份认证,403 表示服务器拒绝客户端发送的请求,404 表示客户端请求的资源不存在
- 5xx:服务端错误,如 500 表示服务器内部发生了不可预期的错误,502 表示作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应,504 表示充当网关或代理的服务器,未及时从远端服务器获取请求
-
请求头:
- 响应头:
详细内容可以参考:HTTP 状态码 | 菜鸟教程 (runoob.com)
- 缓存:强缓存和协商缓存
- cookie(响应头中的 Set-Cookie)
4. 场景分析
- 静态资源
- 方案:缓存 + CDN + 文件名 hash
- 登录
- 鉴权:
- Session + cookie
- JWT(JSON Web Token)
- SSO(单点登录):在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录
- 鉴权:
- AJAX
- XMLHttpRequest
- Fetch
- axios
- 用户体验
-
网络优化
-
稳定性
-
5. WebSocket
- 浏览器与服务器进行全双工通信的网络技术
- 典型场景:实时性要求较高,如:聊天室
- URL 使用
ws://或wssL://开头
三、课后个人总结
这节课上老师主要结合报文讲解了 HTTP 中的一些重要概念,以及进行网络优化的措施。作为 Web 前端开发人员,掌握必要的和网络相关的知识才能更好地解决开发中遇到的问题,而这一部分也是面试中经常会被问及的内容。因此有时间了一定要系统地整理一遍,结合面经进行查漏补缺。