状态码

分类

  • 1XX:服务器收到请求
  • 2XX:请求成功
  • 3XX:重定向
  • 4XX:客户端错误
  • 5XX:服务端错误
  • 这是一个约定,大家都跟着执行。

    常见状态码

    | 状态码 | 含义 | | —- | —- | | 200 OK | 请求成功。一般用于get和post请求 | | 301 Moved Permanently | 永久重定向。请求的信息已经被移动到新的URL,会返回新的URL,浏览器下次会直接跳转到新URL | | 302 Found | 临时重定向。资源只是临时被移动,客户端继续使用原URL | | 304 Not Modified | 资源未修改。所请求的资源未修改,服务器返回此状态码,不会返回任何资源 | | 400 Bad Request | 客户端请求的语法错误,服务器无法理解(产生原因:前端提交的数据在后台找不到与之相对应的实体) | | 401 Unauthorized | 当前请求需要用户验证 | | 403 Forbidden | 服务器已经收到请求,但拒绝执行 | | 404 Not Found | 服务器无法根据用户的请求找到资源 | | 500 Internal Server Error | 服务器内部错误,无法完成请求 | | 504 Gateway timeout | 网关超时。服务器作为网关或代理,但是没有及时从上游服务器收到请求 |

http methods

传统的methods

  • get获取服务器的数据
  • post向服务器提交数据
  • 简单的网页功能,就这两个操作

    现在methods

  • get:获取数据

  • post:新建数据
  • patch/put:更新数据
  • delete:删除数据
  • 也是约定和规范

    Restful API

  • 是一种新的API设计方法(早已推广使用)

    • 传统API设计:把每个URL当做一个功能
    • Restful API设计:把每个URL当做一个唯一的资源
  • 不使用URL参数
    • 传统API设计:/api/list?pageIndex=2
    • Restful API设计:/api/list/2
  • 用method表示操作类型
    • 传统API设计:image.png
    • Restful API设计:image.png

      http headers

      Request Headers

  1. Accept:浏览器可接收的数据格式
  2. Accept-Encoding:浏览器可接收的压缩算法,如gzip
  3. Accept-Languange:浏览器可接收的语言,如zh-CN
  4. Connection:keep-alive:一次TCP连接重复使用
  5. Cookie
  6. Host:访问的网址
  7. User-Agent:简称UA,浏览器信息
  8. Content-type:发送数据的格式,如application/json

    Response Headers

  9. Content-type:返回数据的格式,如application/json

  10. Content-length:返回数据的大小,多少字节
  11. Content-Encoding:返回数据的压缩算法,如gzip
  12. Set-Cookie:设置cookie

    自定义header

  13. image.png

    缓存相关的headers

  14. image.png

    http缓存

    为什么需要缓存

  15. 让页面加载地更快。网页加载过程中比较慢的环节是网络请求,尽量减少网络请求的体积和数量,这样网络请求就会更快一些。网络请求是不稳定的。

  16. 哪些资源可以被缓存:静态资源(JS CSS img)

    强制缓存

  17. image.pngimage.png

  18. Cache-Control存在Responese Headers中,用于控制强制缓存的逻辑。例如Cache-Control:max-age=31536000(单位是秒)
  19. Cache-Control的值:
    1. max-age:缓存的最大过期时间
    2. no-cache:不用本地缓存,到服务端去请求
    3. no-store:不用本地缓存,也不用服务端的一些缓存措施
    4. private:只允许最终用户做缓存
    5. public:允许中间代理等做缓存
  20. 关于Expires

    1. 同在Response Headers中
    2. 同为控制缓存过期
    3. 已被Cache-Control代替

      协商缓存(对比缓存)

  21. image.png

  22. 是一个服务器端缓存策略(并不是指文件缓存在服务端)。服务端判断客户端资源,是否和服务端资源一样,一样就不返回了。
  23. 一致则返回304 not modified,否则返回200和最新的资源。
  24. 资源标识:
    1. 在Response Headers中,有两种
    2. Last-Modified:资源的最后修改时间
      注:If-Modified-Since的值就是Last-Modifiedimage.png
    3. Etag:资源的唯一标识(一个字符串,类似人类的指纹)
      注:If-None-Match的值就是Etagimage.png
    4. 会优先使用Etag
      Last-Modified只能精确到秒级
      如果资源被重复生成,而内容不变,则Etag更精确
  25. 综述
    image.png

    刷新页面对http缓存的影响

  26. 三种刷新操作:

    1. 正常操作:地址栏输入url、跳转链接、前进后退等
    2. 手动刷新:F5,点击刷新按钮,右击菜单刷新
    3. 强制刷新:ctrl + F5
  27. 不同刷新操作,不同的缓存策略

    1. 正常操作:强制缓存有效,协商缓存有效
    2. 手动刷新:强制缓存失效,协商缓存有效
    3. 强制刷新:强制缓存失效,协商缓存失效

      https

      http和https

  28. http是明文传输,敏感信息容易被中间劫持

  29. https = http +加密,劫持了也无法解密
  30. 现代浏览器已开始强制https协议

    加密方式

  31. 对称加密:一个key负责加密和解密

  32. 非对称加密:一对key,A加密之后,只能用B来解密
  33. https同时用到了这两种加密方式。先用安全的非对称加密来加密内容,以后的传输都用成本低的对称加密、
    image.png

    https证书

  34. 中间人攻击:把非对称加密的pubkey直接替换成自己的

  35. 如何预防中间人攻击:使用第三方证书(慎用免费、不合规的证书)
  36. 浏览器校验证书
  37. https传输过程
    image.png

    相关面试题

  38. http常见的状态码有哪些?

  39. http常见的header有哪些?
  40. 什么是Restful API?
  41. 描述一下http的缓存机制(重要)