JS HTTP

113 阅读2分钟

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 缓存

一、强制缓存

强制缓存.png

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

二、协商缓存

协商缓存.png

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

三、缓存综述

缓存综述.png

四、刷新操作

  • 正常操作,强制缓存生效,协商缓存生效
  • 手动刷新,强制缓存失效,协商缓存生效
  • 强制刷新,强制缓存失效,协商缓存失效

HTTPS 加密

http 和 https 区别

  • http 是明文传输,敏感信息会被劫持
  • http = http + 加密,劫持无法加密

加密方式

  • 对称加密,客户端、服务端使用相同的 key 进行加密、解密
  • 非对称解密,加密解密 key 不同
  • https 同时使用了这两种加密

https 证书

  • 中间人攻击
  • 使用第三方证书
  • 浏览器校验证书

https证书加密.png