前端面试题8--http面试题

131 阅读3分钟

http状态码

状态码分类:

  • 1xx 服务器收到请求
  • 2xx 请求成功,如 200
  • 3xx 重定向,如 302
  • 4xx 客户端错误,如 403
  • 5xx 服务端错误,如 500 常见状态码:
  • 200 成功
  • 301 永久重定向(配合location,浏览器自动处理)
  • 302 临时重定向(配合location,浏览器自动处理)(headers location放新网址)
  • 304 资源未被修改
  • 404 资源未找到
  • 403 没有权限
  • 500 服务器错误
  • 504 网关超时

http methods

传统的 methods:

  • get 获取服务器的数据
  • post 向服务器提交数据
  • 简单的网页功能,就这两个操作 现在的 methods:
  • get 获取数据
  • post 新建数据
  • patch/put 更新数据
  • delete 删除数据 Restful API:
  • 一种新的 API 设计方法(早已推广使用)
  • 传统 API 设计:把每个 url 当作一个功能
  • Restful API 设计:把每个 url 当作一个唯一的资源 如何设计成一个资源:
  • 尽量不用url 参数
  • 用 methods 表示操作类型 不使用 url 参数:
  • 传统 API 设计:/api/list?pageIndex=2
  • Restful API 设计:/api/list/2 用 method 表示操作类型(传统API设计):
  • post 请求 /api/create-blog
  • post 请求 /api/update-blog?id=100
  • get 请求 /api/get-blog?id=100 用 method 表示操作类型(Restful API设计):
  • post 请求 /api/blog
  • patch 请求 /api/blog/100
  • get 请求 /api/blog/100

http headers

Request Headers:

  • Accept 浏览器可接收的数据格式
  • Accept-Encoding 浏览器可接收的压缩算法,如 gzip
  • Accept-Languange 浏览器可接收的语言,如 zh-CN
  • Connection:keep-alive 一次TCP连接重复使用
  • cookie 每次同域请求都会带有cookie
  • Host 请求的域名
  • User-Agent(简称UA)浏览器信息
  • Content-type 发送数据的格式,如 application/json Response Headers:
  • Content-type 发送数据的格式,如 application/json
  • Content-length 返回数据的大小,多少字节
  • Content-Encoding 返回数据的压缩算法,如 gzip
  • Set-Cookie 服务器更改/设置cookie 自定义header
// axios-js.com/docs/#Request-Config
headers: {'X-Requested-With': 'XMLHttpRequest'}

缓存相关的headers:

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

http 缓存

强制缓存

Cache-Control

  • Response Headers中,在服务端控制
  • 控制强制缓存的逻辑
  • 例如Cache-Control:max-age=31536000(单位是秒) Cache-Control的值
  • max-age 缓存最大过期时间
  • no-cache 不用强制缓存,交给服务端处理,正常向服务器请求
  • no-store 不用本地缓存,而且不用服务器端的缓存措施
  • private 只能允许最终用户做缓存
  • public 允许中间路由代理做缓存 关于 Expires(老标准)
  • 同在Response Headers中
  • 同为控制缓存过期
  • 已被 Cache-Control 代替

1.jpg

2.jpg

3.jpg 协商缓存(对比缓存)

  • 服务器端缓存策略
  • 服务器判断客户端资源,是否和服务端资源一样
  • 一致则返回 304 ,否则返回 200 和最新的资源

a.jpg

b.jpg

c.jpg

d.jpg

e.jpg

资源标识:

  • 在 Response Headers 中,有两种
  • Last-Modified:资源的最后修改时间
  • Etag:资源的唯一标识(一个字符串,类似人类的指纹,根据内容计算)
  • 会优先使用 Etag
  • Last-Modified 只能精确到秒级
  • 如果资源被重复生成,而内容不变,则 Etag 更精确

微信图片_20220407184431.jpg

三种刷新操作

  • 正常操作:地址栏输入 url,跳转链接,前进后退等
  • 手动刷新:F5,右键点击刷新按钮,点击苹果刷新
  • 强制刷新:ctrl+F5 不同刷新操作,不同的缓存策略
  • 正常操作:强制缓存有效,协商缓存有效
  • 手动刷新:强制缓存失效,协商缓存有效
  • 强制刷新:强制缓存失效,协商缓存失效 小结:
  • 强制缓存 Cache-Control
  • 协商缓存 Last-Modified 和 Etag,304 状态码
  • 完整的流程图