HTTP协议(附练习)

协议 :就是 规则!要求使⽤协议的双⽅必须 严格 遵守。

一、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":""}

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值