什么是HTTP协议
Hyper Text Transfer protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则,主要包含了两项请求和响应。
HTTP的特点
1.基于TCP协议:面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3.HTTP协议是无状态的:对事物的处理没有记忆能力。每次请求-响应都是独立的。
这使得多次请求之间不能共享数据,(这个问题可以通过web会话技术解决)
但是也意味着凭借这种无状态协议,有更快的速度。
HTTP协议又分为:请求协议和响应协议
- 请求协议:浏览器将数据以请求格式发送到服务器
- 包括:请求行、请求头 、请求体
- 响应协议:服务器将数据以响应格式返回给浏览器
- 包括:响应行 、响应头 、响应体
HTTP-请求数据格式
常见的请求主要有POST和GET。
请求方式 | 请求说明 |
---|---|
GET | 获取资源。 向特定的资源发出请求。例:http://www.baidu.com/s?wd=itheima |
POST | 传输实体主体。 向指定资源提交数据进行处理请求(例:上传文件),数据被包含在请求体中。 |
GET请求
POST
请求行
第一行红色的为请求行,其中包括了(请求方式、请求路径、请求协议)
- 请求方式:GET / POST
- 资源路径:/brand/findAll?name=OPPO&status=1
* 请求路径:/brand/findAll
* 请求参数:name=OPPO&status=1
* 请求参数是以key=value形式出现,多个请求参数之间使用&
连接;请求路径和请求参数之间使用?
连接 。- 协议/版本:HTTP/1.1
另外注意:POST请求的连接是不带参数的
请求头
第一行下面,橙色的部分为请求头。格式为key: value形式
常见的HTTP请求头有:
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:数据主体的大小(单位:字节)
请求体
POST请求有请求体,用于存放请求参数;注意GET是没有请求体的,他的请求参数放在请求行的资源路径下。
GET请求和POST请求的区别:
区别方式 | GET请求 | POST请求 |
---|---|---|
请求参数 | 请求参数在请求行中。 例:/brand/findAll?name=OPPO&status=1 | 请求参数在请求体中 |
请求参数长度 | 请求参数长度有限制(浏览器不同限制也不同) | 请求参数长度没有限制 |
安全性 | 安全性低。原因:请求参数暴露在浏览器地址栏中。 | 安全性相对高 |
HTTP-响应数据格式
与HTTP的请求一样,HTTP响应的数据也分为3部分:响应行、响应头 、响应体
- 响应行(以上图中红色部分):响应数据的第一行。响应行由
协议及版本
、响应状态码
、状态码描述
组成
协议/版本:HTTP/1.1
响应状态码:200
状态码描述:OK- 响应头(以上图中黄色部分):响应数据的第二行开始。格式为key:value形式
- 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 服务端发生不可预期的错误