文章目录
1 HTTP协议
1.1 HTTP协议简介&HTTP中的数据类型
1.1.1 HTTP协议简介
协议:双方或多方约定好的规则
HTTP协议:指客户端和服务器之间互相通信时发送数据需要遵守的规则,HTTP协议中的数据又称为报文
HTTP协议是互联网上应用最为广泛的协议,是数据通信的基础,HTTP协议只定义了应用层的内容,想要正常工作,需要依赖于其它协议,如TCP/IP…
使用Chrome查看HTTP协议:
1,ctrl + shift + i 进入开发者工具
2,Network -> Name中选择需要的元素

1.1.2 HTTP协议中的数据类型
HTTP协议中使用MIME表示数据类型
MIME的格式是:
"大类型/小类型" 并与某种文件的扩展名相对应
常见的MIME类型
普通文件:text/plain .text
JPEG图形:image/jpeg .jpg .jpeg
超文本标记语言:text/html .html .htm
au声音文件:audio/basic .au
GZIP文件:application/x-gzip .gz
1.2 HTTP请求
客户端向服务器发送数据就是请求,服务器向客户端回传数据是响应,HTTP请求分为GET请求 和 POST请求
1.2.1 GET请求
GET请求的HTTP协议格式
请求行 + 请求头 + 空行 + 请求体
请求行:
请求的方式 + 请求的资源路径 + HTTP协议版本号
请求头:
由key:value组成 不同的键值对,代表不同的含义
空行:
分隔请求头和请求体
请求体:
客户端发送给服务器的数据
一次GET请求的HTTP协议:
[请求行]
GET /page.jsp HTTP/1.1
// 以GET的方式请求page.jsp 协议是HTTP/1.1
[请求头]
Host: localhost:8080
// 请求的服务器和端口号
Connection: keep-alive
// 告知服务器,本次请求的连接方式该如何处理
// 可选值 keep-alive(响应数据后,过一段时间再断开连接) closed(马上断开)
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
// 用户代理,即当前使用的浏览器的信息
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
// 告诉服务器,客户端可以接收的数据类型,采用MIME类型说明
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
// 告诉服务器,客户端可以接收到的压缩文件格式
Accept-Language: zh-CN,zh;q=0.9
// 告诉服务器,客户端的语言类型
Cookie: Idea-ce0ce528=48e61e25-191c-4d62-8bfb-19417bc25f46; JSESSIONID=F0221D2D1CC4CDB23951ACB313F07D27
1.2.2 POST请求
POST请求的HTTP协议格式
请求行 + 请求头 + 空行 + 请求体
一次POST请求的HTTP协议:
[请求行]
POST /page.jsp HTTP/1.1
// 以POST的方式请求page.jsp 协议是HTTP/1.1
[请求头]
Host: localhost:8080
Connection: keep-alive
Content-Length: 9
// 告诉服务器客户端发送数据的长度
Cache-Control: max-age=0
// 控制缓存的形式
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
// application/x-www-form-urlencoded
// 表示提交的数据格式是name=val&name=val
// 然后将其进行url编码,url编码是将非英文内容转换为%xx%xx
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36
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
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/page.jsp
// 发出请求时浏览器的地址栏地址
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Idea-ce0ce528=48e61e25-191c-4d62-8bfb-19417bc25f46; JSESSIONID=F0221D2D1CC4CDB23951ACB313F07D27
1.2.3 常见的GET/POST请求
GET请求:
form标签method=get,a标签,link引入css,script引入js,img引入图片
浏览器地址栏中输入地址后敲回车也是get请求
POST请求:
form标签method=post
1.3 HTTP响应
1.3.1 常见响应状态码
200
代表本次请求成功
302
请求重定向
404
服务器收到了请求,但请求的资源不存在
500
服务器收到了请求,但服务器内代码执行出错
1.3.2 HTTP响应格式
HTTP协议响应的格式:
响应行 + 响应头 + 空行 + 响应体
响应行:
响应的协议和版本号 + 响应状态码 + 响应状态描述符
响应头:
由key:value组成 不同的键值对,代表不同的含义
空行:
分隔响应头和响应体
响应体:
服务器回传给客户端的数据
一次HTTP协议响应格式:
[响应行]
HTTP/1.1 200
// 以HTTP/1.1的协议响应数据 200代表请求成功
[响应头]
Content-Type: text/html;charset=UTF-8
// 告诉浏览器响应体的数据类型
Content-Length: 376
// 告诉浏览器响应体的数据长度
Date: Tue, 27 Apr 2021 11:58:27 GMT
// 发出请求的时间 是GMT时间
Keep-Alive: timeout=20
Connection: keep-alive
[响应体]
在Chrome浏览器的Network -> Response中查看
这里是一个html页面
201

被折叠的 条评论
为什么被折叠?



