1 Http协议概念
-
1、概念:
- Hyper Text Transfer Protocol ,超文本传输协议
-
2、传输协议:
- 定义了客户端和服务端通信时,发送数据的格式
-
3、特点:
- 基于TCP/IP的高级协议
- 默认端口:80
- 基于请求/响应模型的,一次请求对应一次响应
-
4、Http协议是无状态协议:
- 每次请求之间互相独立,请求之间不能交互数据
-
5、 历史版本:
- 1.0 版本:一次请求响应都会建立新的连接
- 1.1 版本:重复使用连接
2 request—请求消息数据格式(demo04)
2.0 案例
- 1、访问路径:http://localhost:8081/login.html
- 2、提交数据进行跳转
请求行 / 请求头
请求体(请求正文)
2.1 请求行
请求方式 请求URL 请求协议/版本
POST /demo04 HTTP/1.1
2.2 请求头
请求头名称:请求头值 (键值对)
2.3 请求空行
空行:用来等额POST请求的请求头和请求体的
2.4 请求体(请求正文)
(只有post请求有,用来封装POST请求消息的请求参数的)
2.5 请求行 请求头 请求空行 请求体的字符串格式
POST /demo04 HTTP/1.1 请求行
Host: localhost:8081
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
Origin: http://localhost:8081
Connection: keep-alive
Referer: http://localhost:8081/login.html
Cookie: Webstorm-cea968cd=15dbfddb-bcc8-47cf-b809-a141f7d6475b; Idea-b0676662=b5c99ad3-c0e4-43e9-bb14-8751da57f43a; JSESSIONID=EB8E97991EDFC3DF5AF4159D4F422596
Upgrade-Insecure-Requests: 1 请求头
请求空行----------------------------------------------------------
username=Tom&passwprd=123 请求体
2.6 Http请求方式(7种)
Http请求方式共有七种,其中常用的两种:GET和POST请求
GET和POST请求的区别:
GET请求:
请求参数在请求行中,在url后用?拼接
请求的url长度有限制
不逃安全
POST请求:
请求参数在请求体中
请求的url长度没有限制
相对安全
2.7 请求头的内容介绍
请求头相当于浏览器高数服务器浏览器的信息
1、请求主机
Host: localhost:8081
2、浏览器告诉服务器,浏览器的版本
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
3、告诉服务器,浏览器自身可以接收什么类型的响应数据
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
4、浏览器可以支持的语言环境
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
5、浏览器可以接受的压缩格式
Accept-Encoding: gzip, deflate
6、浏览器告诉服务器,请求体的类型
Content-Type: application/x-www-form-urlencoded
7、请求体的字节数
Content-Length: 25
8、用来说明请求从哪里发起的,且仅仅包括协议和域名
Origin: http://localhost:8081
9、HTTP协议连接是存活的,可以被复用
Connection: keep-alive
10、告诉服务器,当前请求从哪里来(防盗链,统计工作)
Referer: http://localhost:8081/login.html
11、当前页面设置的任何Cookie
Cookie: Webstorm-cea968cd=15dbfddb-bcc8-47cf-b809-a141f7d6475b; Idea-b0676662=b5c99ad3-c0e4-43e9-
bb14-8751da57f43a; JSESSIONID=EB8E97991EDFC3DF5AF4159D4F422596
12、升级
Upgrade-Insecure-Requests: 1
3 response—响应消息数据格式
3.1 概述
3.2 数据格式
数据格式:
1、响应行
1、组成:协议/版本 响应状态码 响应状态描述
HTTP/1.1 200 OK
2、响应状态码:
服务器告诉浏览器本次请求和响应的一个状态
1xx:服务器接收客户端消息,但是没有接收完成,等待一段时间后,服务器给客户端发送1XX码
2xx:成功代表200
3xx:代表重新定向:302 重定向 304访问缓存
4xx:客户端错误 404请求路径错误 405请求方式不正确
5xx:服务端错误 500:服务端内部出现异常
2、响应头
1、格式:响应头名称:值
2、常见的响应头:
Content-Type: text/html;charset=UTF-8
服务器告诉客户端本次响应体数据格式以及编码格式
Content-disposition: in-line 或者 attachment;filename=xxx
服务器告诉客户端以什么格式打开响应体数据
in-line:默认值,在当前页面打开
attachment;filename=xxx:以附件的形式打开响应体数据,不如下载
3、响应空行
就是响应头和响应体之间的空白行,只是起到分隔的作用
4、响应体
包括字符串,图片等信息
3.3 字符串格式
字符串格式:
HTTP/1.1 200 响应行
Content-Type: text/html;charset=UTF-8
Content-Length: 102
Date: Sat, 13 Feb 2021 10:11:14 GMT
Keep-Alive: timeout=20
Connection: keep-alive 响应头
响应空行
< html >
< head >
< title >
T
i
t
l
e
Title
Title< /title >
< /head >
< body >
hello response…
< /body >
< /html > 响应体
3.4 图形效果
响应行 响应头
响应体