【面筋烧烤手册】HTTP请求专题

HTTP请求专题

1、状态码

1XX 已被接受等待处理

2XX 成功

  • 200 请求成功
  • 204 请求成功无资源(OPTIONS的返回状态码)
  • 206 partial content 范围请求 部分

3XX 重定向

  • 301 永久性重定向 已被分配新URL(首部会有提示)
  • 302 临时分配新URL 要改POST为GET
  • 303 存在另一个资源
  • 304 请访问协商缓存
  • 307 临时重定向 不改POST

301 302 303 POST改成GET

4XX 客户端错误

  • 400 报文语法错误
  • 401 HTTP请求没通过认证
  • 403 forbidden 被服务器拒绝
  • 404 无资源
  • 405 禁止使用此方法,设置请求头OPTIONS看支持什么方法
var Access-Control-Allow-Method = xhr.getResponseHeader('Access-Control-Allow-Method')
var Access-Control-Allow-Origin = xhr.getResponseHeader('Access-Control-Allow-Origin')

5XX 服务器错误

  • 500 执行请求出错
  • 502 服务器自身正常 但就是访问有问题
  • 503 暂时停机(可能超负载)无法处理请求

2、HTTP缓存

之前我们说到304的协商缓存,现在继续看看缓存的要点

强缓存

  • HTTP 1.0 Expires 过期时间点
  • HTTP 1.1 Cache-control 过期时长计时

协商缓存 (传tag和服务器协商)

  • last-modified 最后修改时间
    头部添加if- Modified- since字段

  • ETag 文档标识 是否有改动
    头部添加if- modified- match字段

  • 比较:

    • 性能:last modified 只用比时间(秒),因为秒所以小于秒的无法判断
    • 精度:ETag MD5生成Hash值
  • 不能缓存的原因:
    磁盘已满 页面不同源

  • 能缓存的条件:

    • GET HEAD
    • POST PUT 流式上传:基于HTTP2.0的帧和流 分块(成帧)传输时要缓存
    • 能使缓存失效的DELETE和PATCH

3.请求方法区别

GET和POST

  1. 缓存:
    GET主动缓存,POST默认不能
  2. 参数:
    GET参数直接在URL里,POS T在请求体里
  3. 编码:
    GET只能ASCII,POST支持更多
  4. 幂等:
    GET一次性发送请求,POST分header(状态码100)再发body ,收发多个
  5. 应用场景:
    GET 搜索关键字(页面传参 幂等发一个收一个)
    POST 注册(不幂等 发多个收一个)

OPTIONS和HEAD

  • HEAD
    几乎和GET一样,只请求头部,可得到资源信息,用于测试链接有效性可不可以访问,可以返回100,类似于POST每次先发个Header看看是不是100
  • OPTIONS
    查看服务器性能,支持的HTTP请求方法,是否能跨域
    在建立连接的第一步xhr.getResponseHeader('Access-Control-Allow-Method和Origin')
原文地址:https://www.cnblogs.com/SiriusZHT/p/14365043.html