HTTP常用知识整理

203 阅读4分钟

http状态码

  • 1xx 服务器收到请求
  • 2xx 请求成功
    • 201 Created 已创建。成功请求并创建了新的资源,用户创建,资源创建成功等
    • 204 No Content 无内容。服务器成功处理,用于删除,更新成功等
  • 3xx 重定向 配合location字段,浏览器自动处理
    • 301 永久重定向
    • 302 零临时重定向
    • 304 Not Modified 资源未被修改,告诉浏览器从缓存中获取
  • 4xx 客户端错误
    • 403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求,比如用户没有权限
  • 5xx 服务端错误
    • 500
    • 504 网关超时

RestfulAPI

传统的 methods

  • get 获取服务器数据
  • post 向服务器提交数据

简单的网页就这两个操作

现在的 methods - RestFullAPI

  • get 获取数据
  • post 新建数据
  • patch/put 提交数据
  • delete 删数据

RestfulAPI

  • 是一种新的API 设计方法
  • 传统API是把每个url当做一个功能
  • Restful API 是把每个URL当做一个唯一的资源

如何设计成一个资源

  • 尽量不使用url参数
  • 用method表示操作类型

不使用url参数

  • 传统API:/api/list?pageIndex=2
  • RestfulAPI::/api/list/2

用method表示操作类型

传统设计

  • post 请求:
    • 创建博客 /api/create-blog
    • 更新博客数据/api/update-blog?id=100
  • get 请求:
    • 获取博客内容:/api/get-blog?id=100

RestfulAPI 设计 用method表示操作类型

  • post 请求 创建博客/api/blog
  • patch 请求 更新博客数据 /api/blog/100
  • get 请求 获取博客数据 /api/blog/100

HTTP Headers

常见的Request Headers

在这里插入图片描述

  • Accept 浏览器可接受的数据格式
  • Accept-Encoding 浏览器可接收的压缩算法,如 gzip 使得资源变小,传输速度加快
  • Accept-Language 浏览器可接收的语言,如 zh-CN
  • Connection: keep-alive 一次tcp链接的重复使用
  • cookie
  • host 请求域名
  • User-Agent(UA)浏览器信息,比如系统,移动端机型等
  • Content-type 发送数据的格式
    • application/json

常见的Response Headers

在这里插入图片描述

  • Content-type 返回的数据格式,application/json
  • Content-length 返回数据的大小, 多少字节
  • Content-Encoding 返回数据的压缩算法,gzip
  • Set-Cookie 服务端修改cookie

缓存相关headers

  • Cache-control Expires
  • Last-Modified If-Modified-Since
  • Etag If-None-Match

http 缓存控制 链接:详细笔记与演示

  • 什么是缓存?为什么需要缓存? 数据在网络上的传输是大量的,如果重复传输不必要的内容就会很耗费流量以及加载时间 所以就有了缓存 缓存是存储在用户本地的数据,用户请求时可以从本地获取而不再依赖于服务端的传输
  • 哪些资源可以被缓存? 静态资源js/css/img,一旦上线就不可能被修改 html一般不会被缓存,会常常更新

强制缓存 Cache-Control

  • Response Headers中
  • 控制强制缓存的逻辑

例如缓存一年的时间

Cache-Control: max-age=3153600	// 毫秒

在这里插入图片描述

cache-control 的值

  • max-age:毫秒级别的过期时间
  • no-cache:不使用强制缓存,交给服务器处理
  • no-store: 不用本地缓存并且不使用服务器缓存,更彻底(不常见)
  • private:只允许最终用户做缓存
  • public:允许中间的路由或代理做缓存

Expires

  • 同在Response Headers中
  • 同为缓存控制,但是已经被catch-control替代

协商缓存(对比缓存)

  • 是一个服务端缓存策略,通过服务端判断一个资源是否可以使用缓存,并不是说缓存在服务端
  • 判断服务端和客户端资源是否一样,如果一致则返回304否则返回200和最新的资源

在这里插入图片描述

  • 在Response-Headers中有两种
    • Last-Modified:资源的最后修改事件
    • Etag:资源的一个唯一标识(通过hash算法加密生成的md5值,通过base64展示)

Last-Modified 与 If-Modified-Since

在这里插入图片描述

Etag 与 If-None-Match

在这里插入图片描述

Last-Modified 和 Etag

  • 会优先使用Etag,因为Last-Modified只能定位到秒级
  • 如果资源被重复生成,而内容不变,Etag就非常精确

在这里插入图片描述

三种刷新操作以及缓存状态

  • 正常操作:地址栏输入url,跳转链接,前进后退等(普通用户使用) 强制缓存有效,协商缓存有效
  • 手动刷新:F5,点击刷新按钮,右击菜单刷新 强制刷新无效,协商缓存有效
  • 强制刷新:ctrl + F5 全部失效