什么是HTTP?
- Hyper Text Transter Protocol 超文本传输协议
- 应用层协议 基于TCP协议
- 请求响应
- 简单可扩展
- 无状态
协议分析——报文
1. Method
- safe(安全的):不会修改服务器的数据的方法。eg:get、head、options
- idempotent(幂等):同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的,所有的safe的方法都是idempotent的。eg:get、head、options、put、delete
3. 状态码
| 状态码 | |
|---|
| 1xx | 指示信息,表示请求已接收,继续处理 |
| 2xx | 成功,表示请求已被成功接收、理解、接受 |
| 3xx | 重定向,要完成请求必须进行更进一步的操作 |
| 4xx | 客户端错误,请求有语法错误或请求无法实现 |
| 5xx | 成功,服务端错误,服务器未能实现合法请求 |
5. RESTFUL API
一种API设计风格;REST-Representation State Transfer
1. 每一个URI代表一种资源
2. 客户端和服务器之间,传递这种资源的某种表现层;
3. 客户端通过HTTP method ,对服务器端进行操作,实现“表现层状态转化”
7. 常用请求头
| |
|---|
| Cookie | 有cookie并且同域访问时会自动带上 |
| Accept | 接收类型,表示浏览器支持的MIME类型 |
| Content-Type | 客户端发送出去的实体内容的类型 |
| Cache-Control | 指定请求和响应遵循的缓存机制,如no-cache |
| If-Modified-Since | 对应服务端的Last-Modified,用来匹配看文件是否变动,只能精确到1s之内 |
8. 常用响应头
| |
|---|
| Content-Type | 客户端返回的实体内容的类型 |
| Cache-Control | 指定请求和响应遵循的缓存机制,如no-cache |
| Content-Type | 客户端发送出去的实体内容的类型 |
| Cache-Control | 指定请求和响应遵循的缓存机制,如no-cache |
| If-Modified-Since | 对应服务端的Last-Modified,用来匹配看文件是否变动,只能精确到1s之内 |
9. 缓存
强缓存:
- Expires,时间戳
- Cache-Control
- 可缓存性
- no-cache:协商缓存验证
- no-store:不使用任何缓存
- 到期
- max-age:单位是秒,存储的最大周期,相对于请求的时间
- 重新验证*重新加载
- must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用
协商缓存:
- Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
- Last-Modified/If-Modified-Since:最后修改时间
10. cookie
Set-Cookie-response
| | |
| --- | --- |
| Name-value | 各种cookie的名称和值 |
|Expires=Date |Cookie的有效期,缺省时Cookie仅在浏览器关闭之前有效|
|Path=Path |限制指定Cookie的发送范围的文件目录,默认为当前|
|Domain=domain |限制cookie生效的域名,默认为创建cookie的服务域名 |
|secure |仅在HTTPS安全连接时,才可以发送Cookie |
HTTP/2
- 更快,更稳定,更简单
- 帧:HTTP/2通信的最小单位,,每个帧都包含帧头,至少也会标识出当前帧所属的数据流
- 消息:与逻辑请求或响应消息对应的完整的一系列帧
- 数据流:已建立的链接内的双向字节流,可承载一条或多条消息
- 控制流:阻止发送方向接收方发送大量数据的机制服务器推送能力
HTTPS
Hypertext Transfer Protocol Secure
- 经过TSL/SSL加密
- 对称加密:加密和解密都是使用同一个密钥
- 非对称加密:加密和解密需要使用两个不同的密钥(公钥和私钥)
静态资源
- 缓存策略:强缓存;
- cache-control:一年
- 允许所有域名访问
- 资源类型:css
- 静态资源方案:缓存+CND+文件名hash
- CND:(Content Delivery Network)通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务