HTTP协议简介

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页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值