协议
:就是 规则!要求使⽤协议的双⽅必须
严格
遵守。
一、HTTP协议简介
简介:超文本传输协议,基于请求与响应的应用层协议。
特点:1. 客户端、服务器模式2. 简单快速3. 灵活4. 无连接5. 无状态
二、URL格式
URL组成:协议://hostname[:port]/path/[? 查询参数1&查询参数2]
完整语法格式:协议://IP地址:端口号/资源路径?查询参数
协议: http、https。 作用:指定数据传输规则
IP地址: 也就是域名。 作用:在⽹络环境中,唯⼀定位⼀台主机端口号: 作用:在主机上,唯⼀定义一个应用程序。可以省略。如果省略,跟随协议。 http - 80 。 Https - 443资源路径: 作用:应用对应的数据资源。可以省略。如果省略,资源路径为 “/”查询参数: 作用:给资源传递参数可以省略。如果省略,没有 ?分割符。可以有多组。每组 k=v 格式。各组之间 用 “&” 隔分。
练习
请写出以下
URL
的各个组成部分。这个
URL没有写出端口号,它的端口是什么?
http : //tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login
三、HTTP请求
产生端:
⼀定产生于客户端。当客户端给服务器发送请求时,使用该协议。(协议也称为请求报文、请求包)
整体格式:请求行:请求方法、URL 、协议版本请求头:k : v空行:代表 请求头 结束。请求体:发送给服务器请求时,携带的数据
【示例】:
POST http://demo.zentao.net/user-login.html HTTP/1.1
Host: demo.zentao.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Upgrade-Insecure-Requests: 1
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
请求行:
⼀定位于 http
请求协议的第⼀行。格式:请求方法
(
空格
) URL(
空格
)
协议版本
请求方法:
GET:查询
——
没有请求体
POST:添加 (注册、登录)
DELETE:删除
——
没有请求体
PUT:修改
URL:见上。
协议版本:常见
HTTP/1.1
请求头:
位于 请求行之下,空行之上的部分。 数据组织格式 ⼀定是 k:v 对。
Content-Type : 作用,指定请求体的数据类型。
application/json:请求体数据类型为json
application/x-www-form-urlencoded:请求体的数据类型 为 表单类型。
请求体:
位于空行之下。
有的 请求协议 是没有请求体的。如:get
、
delete
请求体的数据类型,受请求头中 Content-Type
的值影响。
练习
1
以下是抓取的某个
HTTP
协议数据包的请求报文,请问其中请求行,请求头,请求体分别是什么?
POST ://tpshop-test.itheima.net/index.php HTTP/1.1
Host: tpshop-test.itheima.net
Connection: keep-alive
Content-Length: 53
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://tpshop-test.itheima.net
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90
Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://tpshop-test.itheima.net/Home/user/login.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: is_mobile=0; province_id=1; city_id=2; district_id=3;
is_distribut=1; PHPSESSID=1b80tii77mhle0fqd2bg52ucg5; cn=0
username=13800138006&password=123456&verify_code=8888
练习
2
抓包获取
tpshop登录接口,解析请求数据
四、HTTP响应
产⽣端:
⼀定产生于服务端。当服务器接收到
http请求协议 之后,才会产生http响应协议(响应报文、响应包)。
整体格式:响应行:协议版本、状态码、状态码描述响应头:K:V 格式数据。空行:代表响应头 结束。响应体:服务回发给客户端的 数据。几乎 所有的 响应包,都有响应体。
【示例】:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>...</body>
</html>
状态行:
⼀定位于 http
响应协议的第一行。格式:协议版本
(
空格
)
状态码
(
空格
)
状态码描述
状态码:5 类:1xx:指示信息2xx:成功3xx:重定向4xx:客户端错误5xx:服务端错误
响应头:
位于响应行之下,空行之上的部分。 数据组织格式 ⼀定是 k:v
对。
响应体:
位于空行之下。
几乎所有 响应协议 都有响应体。
响应体中 包含的数据,是接口测试过程中,所要使用的
实际结果
!!
练习
1
以下是
HTTP
协议的响应报文内容,请问,状态行、响应头、响应体分别是哪几个部分?
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 29 Jun 2020 03:36:28 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: is_mobile=0; expires=Mon, 29-Jun-2020 04:36:28 GMT;
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Content-Length: 805
{"status":1,"msg":"\u767b\u9646\u6210\u529f","result":
{"user_id":3338,"email":"","password":"519475228fe35ad067744465
c42a19b2","paypwd":null,"sex":0,"birthday":0,"user_money":"0.00
","frozen_money":"0.00","distribut_money":"0.00","underling_num
ber":0,"pay_points":100,"address_id":0,"reg_time":1590980161,"l
ast_login":1590980161,"last_ip":"","qq":"","mobile":"1380013800
6","level_name":"\u6ce8\u518c\u4f1a\u5458"},"url":""}