这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
HTTP实用指南
初识HTTP
什么是HTTP?
- Hyper Text Transfer Protocol
- 应用层协议,基础TCP协议
- 请求响应
- 简单可扩展
- 无状态
协议分析
报文
Method
- GET: 请求一个指定资源的表示形式,只被用于获取数据
- POST: 用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用
- PUT: 用请求有效载荷替换目标资源的所有当前表示
- DELETE: 删除指定的资源
- HEAD: 请求一个与GET请求的响应相同的响应,但没有响应体
- PATCH: 用于对资源应用部分修改
状态码
- 200 客户端请求成功
- 301 资源被永久转移到其他URL
- 302 临时跳转
- 401 请求未经授权
- 404 请求资源不存在
- 500 服务器内部发生了不可预期的错误
- 504 网关或代理服务器无法在规定时间内获得想要的响应
500和504是服务器端出现错误
常用请求头
- Accept: 表示浏览器支持的MIME类型
- Content-Type: 客户端发送出去实体内容的类型
- Cache-Control: 指定请求和响应遵循的缓存机制
- User-Agent: 用户客户端的一些必要信息,如UA头部
缓存
强缓存
- Expires: 时间戳
- Cache-Control
协商缓存
- Etag: 资源的特定版本的标识符
- Last-Modified: 最后修改时间
HTTPS
经过TSL/SSL加密
- 对称加密
- 非对称加密
场景分析
静态资源
状态码200,一定发送了请求吗?
不一定
缓存策略
- 强缓存
- Cache-Control:一年
静态资源方案
缓存+CDN+文件名hash
登录
表单登录
Request Method: POST (提交一些信息)
从Request Headers中的Content-Type可得提交的信息为form(表单)
跨域
跨域解决方案
- CORS
- 代理服务器
- Iframe
实战
浏览器篇
AJAX之XHR
AJAX之Fetch
- XMLHttpRequest的升级版
- 使用Promise
- 模块化设计,Response,Request,Header对象
- 通过数据流处理对象,支持分块读取