HTTP协议

HTTP协议

1.HTTP协议简介

HTTP:Hyper Text Transfer Protocol(超文本传输协议),规定了浏览器与服务器之间数据传输的规则。

HTTP是基于TCP协议的

HTTP是无连接的

无连接的含义是限制每次连接只能处理一个请求,处理完请求后会断开连接

HTTP是无状态的

对于数据没有记忆能力。每次请求-响应都是独立的。请求之间不会共享数据

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

2.HTTP-请求协议

浏览器将数据以请求格式发送到服务器,由四部分组成:请求行请求头空行请求体

一般格式:

请求行(Request Line):

  • 方法:如 GET、POST、PUT、DELETE等,指定要执行的操作。
  • 请求 URI(统一资源标识符):请求的资源路径,通常包括主机名、端口号(如果非默认)、路径和查询字符串。
  • HTTP 版本:如 HTTP/1.1 或 HTTP/2。

请求行的格式示例:GET /index.html HTTP/1.1

请求头(Request Headers):

  • 格式为key: value形式

  • 包含了客户端环境信息、请求体的大小(如果有)、客户端支持的压缩类型等。

  • 常见的请求头包括HostUser-AgentAcceptAccept-EncodingContent-Length等。

1
2
3
4
5
6
7
8
9
10
11
12
13
Host: 表示请求的主机名

User-Agent: 浏览器版本。 例如:Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79 ,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko

Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;

Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;

Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

Content-Type:请求主体的数据类型

Content-Length:数据主体的大小(单位:字节)

空行

  • 请求头和请求体之间的分隔符,表示请求头的结束。

请求体(可选):

  • 在某些类型的HTTP请求(如 POST 和 PUT)中,请求体包含要发送给服务器的数据。

  • GET请求中,请求参数放在了请求行中的地址中

在HTTP1.1版本中,浏览器访问服务器的几种方式:

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

在我们实际应用中常用的也就是 :GET、POST

GET请求和POST请求的区别:

区别方式 GET请求 POST请求
请求参数 请求参数在请求行中。
例:/brand/findAll?name=OPPO&status=1
请求参数在请求体中
请求参数长度 请求参数长度有限制(浏览器不同限制也不同) 请求参数长度没有限制
安全性 安全性低。原因:请求参数暴露在浏览器地址栏中。 安全性相对高

3.HTTP-响应协议

一般格式

服务器将数据以响应格式返回给浏览器,包括:状态行响应头空行响应体

状态行(Status Line)

响应数据的第一行。响应行由协议及版本响应状态码状态码描述组成

响应头(Response Headers)

响应数据的第二行开始。格式为key:value形式

常见的HTTP响应头有:

1
2
3
4
5
6
7
8
9
Content-Type:表示该响应内容的类型,例如text/html,image/jpeg ;

Content-Length:表示该响应内容的长度(字节数);

Content-Encoding:表示该响应压缩算法,例如gzip ;

Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒 ;

Set-Cookie: 告诉浏览器为当前页面所在的域设置cookie ;

空行

  • 响应头和响应体之间的分隔符,表示响应头的结束。

响应体(可选):

响应数据的最后一部分。存储响应的数据

  • 响应体和响应头之间有一个空行隔开(作用:用于标记响应头结束)