Http协议
1. 什么是协议?
协议实际上就是某些人或某些组织指定好的一套规范,大家都按照这个规范来,就可以沟通无障碍。(比方说大家都能听懂普通话)
2. 什么是Http协议?
(1)Http协议:W3C组织指定的一种超文本传输协议。是一种通信协议,发送消息的模板提前被指定好。(超文本,不是普通文本,例如声音,图像等)。
(2)Http协议游走在Browser和Server之间,B向S发送数据要遵守Http协议,S向B发送数据也要遵守Http协议,以实现B/S结构的解耦合,解耦合就是指Br不依赖于S,S不依赖于B。
(3)无论是哪个品牌的浏览器,或者哪个品牌的WEB服务器,都要遵守Http协议。
3. 什么是Http的请求协议?
(1)Http的请求协议包括4部分(B–>S):
请求行
请求头
空白行(用于分割请求头和请求体)
请求体
(2)Http请求协议的具体报文:(Browser中按F12,找到network,点击可以查看协议的具体内容)
**GET请求:**
GET /Servlet05/getServlet?username=jack&userpwd=123 HTTP/1.1 请求行
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;
q=0.9;
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Cookie: Idea-fa8597ff=9038ea2b-d714-4afd-b427-82ecb8d459fb
Host: localhost:8080 请求头
Referer: http://localhost:8080/Servlet05/index.html
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
空白行
请求体
**POST请求:**
POST /Servlet05/postServlet HTTP/1.1 请求行
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;
v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: 25
Content-Type: application/x-www-form-urlencoded
Cookie: Idea-fa8597ff=9038ea2b-d714-4afd-b427-82ecb8d459fb
Host: localhost:8080 请求头
Origin: http://localhost:8080
Referer: http://localhost:8080/Servlet05/index.html
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
空白行
username: lsi1 请求体
userpwd: 123
(3)请求行
包括三部分:
1. 请求方式。(例如:**get**,**post**,delete,put,head,options,trace)
2. URI。
(1)URI:统一资源标识符,代表网络中某个资源的名字。但是通过URI无法定位。
(2)URL:统一资源定位符,代表网络中某个资源,通过URL是可以定位到该资源的。
(3)URI和URL关系:
URL包括URI。
http://lcoalhost:8080/Servlet05/index.html 这是URL
Servlet05/index.html 这是URI
3. HTTP协议版本号。
(4)请求头
1. 请求的主机
2. 主机的端口
3. 浏览器信息
4. 平台信息
5. cookies信息等等
(5)请求体
向服务器发送的具体数据
4. 什么是Http的响应协议?
(1)Http的响应协议包括4部分(S–>B):
状态行
响应头
空白行(用于分割响应头和响应体)
响应体
(2)HTTP协议响应的具体报文:
HTTP/1.1 200 ok 状态行
Content-Type: text/html;charset=UTF-8 响应头
Content-Length: 142
Date: Wed, 17 Aug 2022 13:45:35 GMT
Keep-Alive: timeout=20
Connection: keep-alive
空白行
<!DOCTYPE html> 响应体
<html>
<head>
<title>form get servlet</title>
</head>
<body>
<h1>form get servlet</h1>
</body>
</html>
(3)状态行
由三部分组成
1. 协议版本号(HTTP/1.1)
2. 状态码
(1)200表示请求响应成功,正常结束;
(2)404表示响应的资源不存在,是前端错误;
(3)405表示前端发送的请求方式与后端请求的处理方式不一致
比如:前端是POST请求,后端处理方式是get,发生405
比如:前端是GET请求,后端处理方式是post,发生405
(4)500表示服务器端的程序出现了异常
**注意:以4开始一般是浏览器端的错误,以5开始一般是服务器端的错误**
3. 状态的描述信息(ok表示正常成功结束,not found表示资源找不到)
(4)响应头
- 响应的内容类型
- 响应的内容长度
- 响应的时间等等