JS HTTP
JS HTTP
HTTP 状态码
一、状态码分类
- 1xx 服务器收到请求
- 2xx 请求成功
- 3xx 重定向
- 4xx 客户端请求错误
- 5xx 服务端报错
二、常见状态码
- 200 请求成功
- 301 永久重定向(配合 location,浏览器自动处理)
- 303 临时重定向(配合 location,浏览器自动处理)
- 304 资源未被修改(cache)
- 404 资源未找到
- 403 权限不足
- 500 服务器错误
- 504 网关超时
Restful Api
- 传统 api 设计:把每个 url 当作一个功能
- Restful api 设计:把每个 url 当作一个唯一的资源
- 尽量不用 url 参数,用 method 表示操作类型
HTTP Headers
一、常见的 Request Headers
- Accept 浏览器可接收的数据格式
- Accept-Encoding 浏览器可接收的压缩算法,如 gzip
- Accept- Language 浏览器可接收的语言,如 zh-cn
- Connection: keep-alive 一次 TCP 连接可以重复使用
- Cookie
- Host
- User-Agent 浏览器信息
- Content-type 客户端数据格式,如 application/json
二、常见的 Response Headers
- Content-type 服务端返回数据格式,如 application/json
- Content-length 服务端返回数据大小
- Content-Encoding 服务端返回数据的压缩算法,如 gzip
- Set-Cookie 修改客户端的 cookie
HTTP 缓存
一、强制缓存

- Response Header 中的 Cache-Control 控制,如 cache-control: max-age=xxx
- max-age 单位是秒
- no-cache 不使用强制缓存
- no-store 不使用强制缓存并且不使用服务端的缓存措施
- expires 控制缓存时间,被 cache-control 代替
二、协商缓存

- 服务端缓存策略,由服务端判断是否使用本地缓存
- 服务端判断客户端请求资源是否与服务端一致
- 一致返回 304,否则返回 200 和最新资源
- 资源标识在 Response Header 中有两种:
- Last-Modified 资源最后修改时间,客户端再次请求时,会放在 Request Header 的 If-Modified-Since 中
- ETag 资源唯一标识,客户端再次请求时,会放在 Request Header 的 If-None-Match 中
- 优先使用 ETag,Last-Modified 精确到秒,ETag 更精准
三、缓存综述

四、刷新操作
- 正常操作,强制缓存生效,协商缓存生效
- 手动刷新,强制缓存失效,协商缓存生效
- 强制刷新,强制缓存失效,协商缓存失效
HTTPS 加密
http 和 https 区别
- http 是明文传输,敏感信息会被劫持
- http = http + 加密,劫持无法加密
加密方式
- 对称加密,客户端、服务端使用相同的 key 进行加密、解密
- 非对称解密,加密解密 key 不同
- https 同时使用了这两种加密
https 证书
