1.HTTP是什么

全称超文本传输协议

  • 超文本:txt属于普通文本,超文本可以有图片、视频、音频。所以是超级文本
  • 传输协议:xx协议,指的是一套规则,传输协议就是两个主机之间传输规则

连起来就是:HTTP是一个用于超文本传输的规则

2.HTTP状态码有哪些

image.png

  • 1xx:提示信息
  • 2xx:成功信息
    • 200:OK 若非HEAD请求的响应,正常此类响应应该有body
    • 204:和OK相同,但是没有body数据
    • 206: 分块下载或断点续传,不是服务器成功处理成功的状态。没见过
  • 3xx:重定向信息

    • 301:Move Permanently 永久重定向,请求资源不存在需要改用新的URL再次访问
    • 302:Found 临时重定向需要暂时用另一个URL访问

      301和302的响应头里有Location字段

    • 304:Not Modified 标识资源未修改,重定向到浏览器缓冲文件

  • 4xx:客户端错误
    • 400:BadRequest 请求报文错误,笼统的错误
    • 403:Fobbidden表示服务器禁止访问资源
    • 404:NotFound 请求资源不在服务器上
  • 5xx:服务端错误,请求报文没问题,但是服务处理时出现了问题

    • 500:Internal Server Error 笼统的错误
    • 501:Not Implemented 请求功能未实现
    • 502:Bad Gateway常见的错误,网关正常,但是路由到其他服务器出错
    • 503:Service Unavailable,服务器繁忙,一般重启微服务时立刻从网关访问时出现

      3.Http的请求和响应报文的组成

      HTTP报文主要有:

    • 请求报文

      • 请求行
      • 请求头
      • 请求体

image.png
image.png

  • 响应报文
    • 响应行
    • 响应头
    • 响应体

image.png
image.png

图解HTTP

image.png

image.png
image.pngimage.png

小结

HTTP知识点整理 - 图10

4.HTTP头部解析

首部字段被分为4中类型:

  • 通用首部字段:请求和响应报文都会使用到
  • 请求和响应独有首部字段
  • 实体首部字段:针对实体部分的报文首部

    通用首部字段集合

    image.png
    Connection
    主要管理持久连接。
    HTTP1.1版本前是:Close,需要手动开启
    HTTP1.1版本之后:默认Keep-Alive
    Cache-Control
    主要控制是否可以取缓存数据,这里值有好多,这里就不列举了。

    请求首部字段集合

    image.png
    Accept
    通知服务器客户端,也就是发送请求的这个人可以接收什么类型的数据
    Accept-Encoding
    通知服务器客户端支持哪种形式的报文主体压缩。
    Host
    image.png
    直观的,我前后端分离后,我这个页面访问可能是ytest1接口,另一个页面可能是ytest2接口。Host这里就是记录ytest1或ytest2.
    说白了,实际请求的地址
    User-Agent
    传达浏览器的种类

    响应首部字段集合

    image.png
    Location
    当发生重定向时,重定向Location指定的URI
    Server
    告知客户端当前服务器上安装的HTTP服务器应用程序。
    我们这边页面部署到nginx上,则此字段是nginx
    Vary
    image.png
    Vary字段是由源服务器返回的字段,用来告诉代理服务器,如果有请求的Accept-Language字段也是:en-us的。可以从缓存中获取响应返回。

WWW-Authenticate

image.png
用于HTTP访问认证,告知客户端访问此URI的认证方案。Basic或Digest。状态码401情况下必带此字段。

实体首部字段集合

image.png

Allow

主要告诉对方我的资源可以用哪种方法请求

Content-MD5

对报文主体做摘要,保证数据完整

Expires

指定可以使用缓存的过期时间

专为Cookie设置的头部

image.png

Set-Cookie

服务器响应报文中返回客户端一个Cookie
image.png

Cookie

客户端每次请求带着 Cookie的字段

5.Http支持的方法

image.png

6.HTTP1.1性能如何

  1. 长链接:不需要每次都三次握手、四次分手
  2. 管道网络传输:客户端不必等到前一个请求响应后,才能发第二个请求
  3. 使用Cookie状态管理
  4. 服务端的队头阻塞:请求堆到服务端,服务端若被先到的请求阻塞,则后面请求都要等着

    http1.1有哪些缺点?

  5. 通信使用明文(不加密),内容可能会被窃听(报文传输过程中,可能被获取)

  6. 不验证通信方的身份,因此有可能遭遇伪装(你不知道你访问的服务器是不是真实的)
  7. 无法证明报文的完整性,所以有可能已遭篡改 (他人在报文中加内容,浏览器是无感知的)

URI和URL

URI是统一资源标识符,只要能标识一个唯一资源的 一串符号 都是URI。
URL是统一资源定位符,是URI的子集。URL着重告诉你如何找到这个资源。
通过URL一定可以标识唯一资源,但是能标识唯一资源的标识不只有URL,其他的集合统称为URI