HTTP协议补充

上次我们对HTTP协议已经有了初步的了解,今天我们就来继续学习一下HTTP协议

  1. HTTP协议格式

    HTTP协议的格式大致可划分成一下几个部分

    • Request
      • Request line
        • method
        • path
        • Version
      • head
      • body
    • Response
      • Response line
        • version
        • Status code
        • Statis text
      • head
      • body
  2. HTTP Method(方法)

    HTTP Method是HTTP请求中Request部分,大概有以下几种定义:

    • GET
    • POST
    • HEAD
    • PUT
    • DELETE
    • CONNECT
    • OPTIONS
    • TRACE

    在这几种方法中,比较常用的是GETPOST方法,HEAD和GET类似,只返回请求头

    PUT和DELETE分别表示添加资源和删除资源,这只是一种语义上的约定,并没有强约束

    CONNECT多用于HTTPS和WebSocket

    OPTIONS和TRACE一般用于调试,多数线上服务器不支持

  3. HTTP Status code(状态码)和HTTP status text(状态文本)

    常见的状态码有以下几种:

    • 1xx: 临时回应,表示客户端请继续
    • 2xx: 请求成功
      • 200: 请求成功
    • 3xx: 表示请求的目的有变化,希望客户端进一步处理
      • 301&302:永久性与临时性跳转
      • 304:客户端缓存没有更新
    • 4xx: 客户端请求错误
      • 403:无权限
      • 404:表示请求的页面不存在
      • 418:这是一个彩蛋
    • 5xx: 服务端请求错误
      • 500: 服务端错误
      • 503: 服务端暂时性错误,可以稍后再试

    在前端开发的过程中,1xx系列的状态码被浏览器http库直接处理掉了,不会让上层知晓

    2xx系列的状态码通常是网页请求成功的标志

    3xx系列比较复杂,301和302两个状态表示当前资源已经被转移,只不过一个是永久性转移,一个是临时性转移。实际上301更接近于一种报错,提示客户端下次别来了

    产生304状态的前提是客户端本地已经有缓存的版本,并且在Request中告诉了服务端,当服务端通过时间或者tag发现没有更新的时候,就会返回一个不含body的304状态

  4. HTTP Head(HTTP头)

    HTTP头可以看作一个键值对。原则上,HTTP头也是一种数据,我们可以自由定义HTTP头和值。在HTTP规范中规定了一些特殊的HTTP头。

    Request Header

Request Header 规定
Accept 浏览器端接收的格式
Accept-Encoding 浏览器接收的编码方式
Accept_Language 浏览器接受的语言,用于服务端判断多语言
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • © 2019-2021 musi

请我喝杯咖啡吧~

支付宝
微信