HTTP实用指南 | 青训营笔记

86 阅读3分钟

什么是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确保内容以一种极为高效的方式为用户的请求提供服务