阅读之图解HTTP-认识简单的HTTP协议

HTTP

  • HTTP协议用于客户端和服务端之间的通信
  • 通过请求和响应进行通信,请求由客户端发出,响应由服务器端回复
  • 无状态协议,不保存状态信息,为了实现保存状态信息,引入了cookie
    • 1.客户端发起第一次请求
    • 2.服务器端,生成Cookie信息,通过set-Cookie首部字段信息,通知客户端保存Cookie
    • 3.下一次客户端请求时,客户端会自动在请求报文上添加Cookie信息
    • 4.服务器端收到,对比服务器上的内容,判定用户是谁
  • 持久连接:最初HTTP,每进行一次HTTP通信,就要断开一次TCP连接,HTTP/1.1 引入了持久连接keep-alive,如果任意一端没有明确提出断开连接,则保存TCP连接
  • 管线化:以前,发送请求需等待并收到响应之后,才能发送下一个请求,引入管线化技术之后,可以同时并行发送多个请求,而不需要等待响应了

HTTP报文

在这里插入图片描述
HTTP报文大致可分为报文首部和报文主体部分
报文主体 = 实体主体
实体 = 实体首部 + 实体主体
⚠️报文主体不是必须的,报文主体传送的内容,是应该被发送的数据
例如:

  • 1.用户只是想获取资源,使用GET方法,请求报文的报文主体就没有内容了
  • 2.用户向服务器传送文件,使用PUT方法,在请求报文的报文主体包含传送内容
  • 3.服务器返回用户请求的资源,在响应报文的报文主体中包含请求资源
  • 4.服务器返回304状态码时,告诉用户使用未过期的缓存,响应报文的报文主体为空

请求报文首部

在这里插入图片描述
请求行 = 请求方法 + 请求UR I+ 协议版本号 GET /index.html HTTP/1.1
请求访问某台HTTP服务器上的/index.html页面资源

请求方法

  • GET:获取资源
  • POST:传输请求报文主体,目的不在于获取响应的报文主体
  • PUT:传输文件,在请求报文主体中加入文件内容
  • HEAD:与GET方法一样,不过不返回报文主体内容
  • DELETE:删除文件
  • OPTIONS:询问支持的方法,查询指定资源支持的方法
  • TRACE:追踪路径
  • CONNECT:要求用隧道协议连接代理

响应报文首部

在这里插入图片描述
状态行 = 协议版本号 + 状态码数值 + 原因短语 HTTP/1.1 200 OK

状态码

状态码 = 状态码数值 + 原因短语

  • 状态码类别

    • 1XX:信息性状态码--------------接收的请求正在被处理
    • 2XX:成功状态码----------------请求正常处理完毕
    • 3XX:重定向状态码--------------需要进行附加操作以完成请求
    • 4XX:客户端错误状态码---------服务器无法处理请求
    • 5XX:服务器端错误状态码-------服务器处理请求出错
      ⚠️只要遵循状态码列表的定义,即使改变RFC2616中定义的状态码,或服务器端自行创建状态码都没问题
  • 常见状态码

    • 200 OK----------------------------表示服务器端正常处理了客户端发来的请求
      不过,不同的请求方法,会得到不同的结果
      使用GET方法时,对应的请求资源会作为响应返回;
      使用HEAD方法时,对应资源则不会作为响应返回,只返回报文首部,服务器被动不返回报文主体
    • 204 NO Content-------------------请求处理成功,但没有资源返回
      响应报文中不含报文主体,服务器主动不返回报文主体
    • 206 Partial Content----------------客户端进行了范围请求
      实际上服务器上成功的执行了GET请求,但是客户端要求,返回指定范围内的数据
    • 301 Moved Permanently-----------永久性重定向
      客户端访问的资源,被服务器端永久的分配了新的URI(统一资源标识符),此时服务器端在响应报文中添加Location首部字段,客户端保存提示的URI,自动根据新的URI再次发松请求,得到数据
    • 302 Found-------------------------临时性重定向
      服务器端临时移动了资源,服务器带有新的URI响应,客户端不保存新的URI,自动根据新的URI发送请求,得到数据
    • 303 See Other---------------------URI已经更新,明确提示客户端使用GET方法请求获取资源
      与301,302对比,301,302 没有明确指定客户端下一次的请求方法,
      但是,其实几乎所有的浏览器都会把POST改成GET,并删除请求报文中的报文主体部分
    • 304 Not Modified--------------资源已找到,但不符合客户端传来的条件
      其实与重定向没有关系,表示,客户端直接使用了未过期的缓存
    • 307 Temporary Redirect------临时重定向
      与302 相同,但307不会改变请求方法
    • 400 Bad Request-------------请求中存在语法错误
    • 401 Unauthorized-------------请求中的认证失败
    • 403 Forbidden----------------服务器端不允许访问该资源
    • 404 Not Found----------------服务器上没有该资源,或服务器端拒绝请求且不想说明理由
    • 500 Internal Server Error-------服务器端发生了内部故障
    • 503 Service Unavailable--------服务器暂时处于超负荷或正在进行停机维护状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值