# 常见的请求方法及其相关面试问题

# 请求方法

  • GET
    用来请求服务器的资源,是一个幂等请求,不会造成服务器数据的改变
  • POST
    用来向服务器提供实体,服务器会保存提供的实体数据,不是一个幂等请求,会对服务器存储的数据造成改变。
  • PUT
    用来提供数据,以更新服务器存储的数据。
  • DELETE
    用来删除服务器里存储的相关数据
  • HEAD
    和 GET 类似,只不过没有请求体
  • OPTIONS
    用来发起预请求,通常用于跨域问题
  • CONNECT
    要求在与代理服务器通信时建立一个隧道,用于 TCP 通信
  • TRACE
    通常用于测试

# 相关面试问题

  1. GET 请求和 POST 请求的区别
    • 应用场景
      GET 请求通常用来请求数据,是一个幂等请求,不会对服务器存储的数据做出改变。POST 请求通常用来提交数据,不是一个幂等请求,会对服务器存储的数据造成改变
    • 发送的报文格式
      GET 请求的请求体为空,POST 请求的请求体一般存储着要发给服务器的数据。
    • 是否缓存
      因为 GET 请求通常时来向服务器请求资源,所以浏览器一般会对 GET 请求做缓存,但是很少对 POST 请求做缓存。
    • 安全性
      GET 请求可以在 url 中携带一些参数,但是这种方式对于 POST 而言时不安全的,因为 POST 的参数中可能会携带用户的星期,而 URL 会被浏览器缓存。
    • 请求长度
      因为浏览器对 url 的长度做了限制,所以 GET 请求发送请求的参数的个数会受到影响
    • 参数类型
      POST 请求的参数支持更多类型

# 常见的 HTTP 请求头和响应头

请求头

  • 本次请求的相关信息
    • Content-Type: 客户端发出去的请求体的类型
    • Host: 发出请求的所在页面的域名
    • Referer: 发送请求的所在页面的 url
    • origin:最初的请求是从哪里发起的,只会精确到端口号,更尊重隐私
  • 希望收到的响应体的类型
    • Accept:浏览器支持的类型
    • Accept-Charset: 浏览器支持的字符集
    • Accept-Encoding: 浏览器支持的压缩编码
    • Accept-Language: 浏览器自持的语言
  • 缓存相关
    • Cache-Contral: 是否开启缓存,开启协商缓存还是强缓存,no-store 不开启缓存,no-cache 开启强缓存。
    • Expires: 缓存到期时间
    • Max-age: 缓存保存多长时间
    • If-Modified-Since: 对标响应头的 Last-Modified, 用来匹配文件是否变动,只能精确到 1s 之内
    • If-None-Match: 对标响应头的 Etag,非常精确
  • Cookie
    • 可以携带相关信息,同源访问时会自动带上
  • 用户信息
    • User-Agent: 用户客户端的一些必要信息

响应头

  • 本次响应的相关信息
    • Content-Type: 同上
    • Server: 服务器的一些相关信息
  • 同源策略
    • Access-Contral-Allow-Origin: 服务器允许请求的 Origin 头部
  • 缓存相关
    • Cache-Contral: 同上
    • Expires: 同上
    • Max-age: 同上
    • Last-Modified: 请求资源最后修改的时间
    • Etag: 资源特定版本的标识符
  • Cookie
    • Set-Cookie: 返回给客户端,用于设置 Cookie

# http 请求报文

# http 响应报文

# 常见状态码

  • 1xx 请求正在处理
  • 2xx 请求处理成功
    • 200 请求已经被服务器正确处理
    • 204 请求被正确处理,但是没有返回响应体
    • 206 表示进行了范围请求
  • 3xx 请求发送重定向
    • 301 请求永久重定向
    • 302 请求临时重定向
    • 304 让服务器去请求缓存文件
  • 4xx 客户端发生错误
    • 400 请求体存在语法错误
    • 401 请求没有权限
    • 403 请求的资源被服务器拒绝
    • 404 请求的资源不存在
    • 405 服务器不支持这种请求方式
  • 5xx 服务器发生错误
    • 500 服务器发送错误
    • 501 服务器不支持请求所需要的某个功能
    • 502 服务器从上层服务器得到了空的响应
    • 503 服务器发送临时错误
    • 504 服务器响应超时
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

ziMu 微信支付

微信支付

ziMu 支付宝

支付宝