Http协议

HTTP协议

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输
的规则。
http是互联网上应用最为广泛的一种网络协议
http协议要求:浏览器在向服务器发送请求数据时,或是服务器在向浏览器发送响应数据时,都必须按照固定的格式进行数据传输
如果想知道http协议的数据传输格式有哪些,可以打开浏览器,点击 F12 打开开发者工具,点击Network 来查看

Http协议_第1张图片
浏览器向服务器进行请求时:

  • 服务器按照固定的格式进行解析

Http协议_第2张图片
服务器向浏览器进行响应时:

  • 浏览器按照固定的格式进行解析
    Http协议_第3张图片
    学习HTTP主要就是学习请求和响应数据的具体格式内容

**面试题:**http协议的特点

  • 基于TCP协议: 面向连接,安全
    TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全

  • 基于请求-响应模型: 一次请求对应一次响应(先请求后响应)
    请求和响应是一 一对应关系,没有请求,就没有响应

  • HTTP协议是无状态协议: 对于数据没有记忆能力。每次请求-响应都是独立的
    无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。

  • 缺点: 多次请求间不能共享数据

  • 优点: 速度快

格式

HTTP协议又分为:请求协议和响应协议

  • 请求协议:浏览器将数据以请求格式发送到服务器
    • 包括:请求行、请求头 、请求体
  • 响应协议:服务器将数据以响应格式返回给浏览器
    • 包括:响应行 、响应头 、响应体

请求方式:

GET: 获取资源。
向特定的资源发出请求。例:http://www.baidu.com/s?wd=itheima
POST: 传输实体主体。
向指定资源提交数据进行处理请求(例:上传文件),数据被包含在请求体中。
OPTIONS: 返回服务器针对特定资源所支持的HTTP请求方式。
因为并不是所有的服务器都支持规定的方法,为了安全有些服务器可能会禁止掉一些方法,例如:DELETE、PUT等。那么OPTIONS就是用来询问服务器支持的方法。
HEAD: 获得报文首部。
HEAD方法类似GET方法,但是不同的是HEAD方法不要求返回数据。通常用于确认URI的有效性及资源更新时间等。
PUT: 传输文件。
PUT方法用来传输文件。类似FTP协议,文件内容包含在请求报文的实体中,然后请
求保存到URL指定的服务器位置。
DELETE: 删除文件。
请求服务器删除Request-URI所标识的资源
TRACE: 追踪路径。
回显服务器收到的请求,主要用于测试或诊断
CONNECT: 要求用隧道协议连接代理。
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

GET方式的请求协议:
Http协议_第4张图片

  • 请求行 :HTTP请求中的第一行数据。由: 请求方式 、 资源路径 、 协议/版本 组成(之间使用空
    格分隔)
    • 请求方式:GET
    • 资源路径:/brand/findAll?name=OPPO&status=1
      • 请求路径:/brand/findAll
      • 请求参数:name=OPPO&status=1
        • 请求参数是以key=value形式出现
        • 多个请求参数之间使用 & 连接
      • 请求路径和请求参数之间使用 ? 连接
    • 协议/版本:HTTP/1.1
    • 请求头 :第二行开始,上图黄色部分内容就是请求头。格式为key: value形式
      • http是个无状态的协议,所以在请求头设置浏览器的一些自身信息和想要响应的形式。这样服务器在收到信息后,就可以知道是谁,想干什么
      • 请求体 :存储请求参数
        • GET请求的请求参数在请求行中,故不需要设置请求体

常见的HTTP请求头有:

Host: 表示请求的主机名
User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0
...Chrome/79IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like
Gecko
Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网
页;
Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
Content-Type:请求主体的数据类型
Content-Length:数据主体的大小(单位:字节)

POST方式的请求协议:
Http协议_第5张图片

  • 请求行(以上图中红色部分):包含请求方式、资源路径、协议/版本
    • 请求方式:POST
    • 资源路径:/brand
    • 协议/版本:HTTP/1.1
  • 请求头(以上图中黄色部分)
  • 请求体(以上图中绿色部分) :存储请求参数
    • 请求体和请求头之间是有一个空行隔开(作用:用于标记请求头结束)
      Http协议_第6张图片

HTTP-响应协议

与HTTP的请求一样,HTTP响应的数据也分为3部分:响应行、响应头 、响应体
Http协议_第7张图片

  • 响应行(以上图中红色部分):响应数据的第一行。响应行由协议及版本 、响应状态码 、状态码描述组成
    • 协议/版本:HTTP/1.1
    • 响应状态码:200
    • 状态码描述:OK
  • 响应头(以上图中黄色部分):响应数据的第二行开始。格式为key:value形式
    • http是个无状态的协议,所以可以在请求头和响应头中设置一些信息和想要执行的动作,这样,对方在收到信息后,就可以知道你是谁,你想干什么
  • 响应体(以上图中绿色部分): 响应数据的最后一部分。存储响应的数据
    - 响应体和响应头之间有一个空行隔开(作用:用于标记响应头结束)
    常见的HTTP响应头有:
Content-Type:表示该响应内容的类型,例如text/html,image/jpeg ;
Content-Length:表示该响应内容的长度(字节数);
Content-Encoding:表示该响应压缩算法,例如gzip ;
Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300;
Set-Cookie: 告诉浏览器为当前页面所在的域设置cookie ;

响应状态码

  • 1xx :响应中 — 临时状态码。表示请求已经接受,告诉客户端应该继续请求或者如果已经完成则忽略
  • 2xx :成功 — 表示请求已经被成功接收,处理已完成
  • 3xx :重定向 — 重定向到其它地方,让客户端再发起一个请求以完成整个处理
  • 4xx :客户端错误 — 处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
  • 5xx :服务器端错误 — 处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,
    HTTP版本不支持等

记住常用:
200 ok 客户端请求成功
404 Not Found 请求资源不存在
500 Internal Server Error 服务端发生不可预期的错误

你可能感兴趣的:(Spring学习,HTTP,http,网络协议,网络)