HTTP协议
前言
了解关于javaWeb的HTTP协议,更好的理解客户端和服务端的通信。
一、HTTP协议
1、什么是HTTP协议
协议就是规则,遵守规则才能高效协作完成通信。
HTTP协议就是客户端和服务端通信时所发数据要遵守什么样的规则,这里的通信即客户端的请求和服务端的响应。
2、请求
A.GET
1)请求行
名 | 值 |
---|---|
请求类型 | GET |
请求的资源 | /资源路径[?请求参数名=请求参数值&请求参数名2=请求参数值2…] |
需遵守的协议 | HTTP/1.1 |
GET /book/ HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: “Microsoft Edge”;v=“95”, “Chromium”;v=“95”, “;Not A Brand”;v=“99”
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: “Windows”
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
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,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: JSESSIONID=F67CC0FF7B6F365863728429F9F9C881
2)请求头
以Key,Value的形式存在,给服务端告知一些必要的信息。
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
客户端告诉服务端可接收响应体内容的类型。
Accept-Encoding:gzip, deflate, sdch
客户端告诉服务端接收数据的压缩格式
Accept-Language:zh-CN,zh;q=0.8
客户端告诉服务端接收数据的语言类型,zh-CN中文,en-US英文。
Connection:keep-alive
客户端告诉服务端接回我之后不要马上关闭,保存一段时间的连接。
Host:localhost:8080
定位服务端的IP和定位web容器的端口。
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
请求由浏览器带发,所以浏览器为代理。
B.POST
1)请求行
名 | 值 |
---|---|
请求类型 | POST |
请求的资源 | /资源路径 |
需遵守的协议 | HTTP/1.1 |
2)请求头
以Key,Value的形式存在,给服务端告知一些必要的信息。
3)请求体
一般为发送给服务器的表单数据。
3、常见请求分类
A.Get请求
1)form标签+method=“get”
2)a标签
3)引入css,js,img以及iframe引入HTML
4)浏览器输入地址敲回车
B.Post请求
1)form标签+method=“post”
4、响应的HTTP协议格式
1)响应行,协议+状态码+状态码解释
2)响应头,必要信息
3)响应体,一般情况下是传回的HTML
A.常用响应码说明
1)200,请求响应成功。
2)302,重定向到其它请求路径,不同的请求有不同的信息和域。
3)404,请求成功,请求的资源不存在。
4)500,请求成功,服务器内部报错。
B.MIME类型说明
HTTP中数据类型的规范,格式为大类型/小类型,如text/html,表示为html的文本;img/gif,表示为gif的图片文件。
常见MIME类型
总结
1)HTTP协议
2)GET、POST详解
参考文献
[1] JavaWeb 尚硅谷
[2] HTTP 报文结构