博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jmeter新手频犯错误之一(登录)
阅读量:5157 次
发布时间:2019-06-13

本文共 1287 字,大约阅读时间需要 4 分钟。

  昨天被人问了一个问题:为什么我用Jmeter先创建一个登录请求,然后创建一个操作(比如计算账单)请求,运行之后结果树中却是status_code=401(即登录失败),我明明登录了啊....

emmm.....,这貌似是我回答过几次的问题,而且好像新人都容易犯这个错,我觉得我有必要写点什么。

  首先我们来了解一下这个“登录”。一个网站呢,我们一般先登录,然后登录成功进入网站执行一些操作。这看上去和上面的流程一模一样,没毛病。这是UI层的,我们在深入点,到接口层。

为什么你不登录的时候直接访问计算账单的url,系统会自动帮你跳转到登录界面呢?因为它通过一些机制判断了你不是“登录中”的状态。

而这机制中,简单的来说就是用一个值的合法性来判定,即Cookie(假设这个系统是用的cookie校验机制,当然还有什么token之类的啦,具体看系统)。

而我们使用浏览器登录-->计算账单-->付款...等一系列流程之所以这么顺畅,是因为浏览器在之后发送请求的时候自动带上了你登录所产生的Cookie(浏览器这种机制为后来的Xss和Csrf攻击提供了好环境)。

登录过程中客户端(浏览器)和服务器的交互,简单点说大概是这样的:(其实之前应当还有两步:1、用户在客户端(浏览器)上进行访问;2、服务器收到请求返回一个状态码401,告知客户端需要登录。这样才是一个比较健全的登录过程)

1、用户在浏览器中输入账号和密码,发起登录请求(requests);

2、服务器端收到请求,校验账号和密码的正确性。如果正确,返回一个“登录成功”的响应(response)给用户,这个response中会有一个字段Cookie;

3、然后用户之后发起的每个request中都会带上cookie这个字段;

4、服务器之后会通过这个cookie来识别这个用户,进而判断用户是否合法;()

  以上,写的比较简单吧,知道这个意思就行。若想了解关于“登录”过程中的交互具体细节,百度一下就OK了。

  看完了上面的这个过程,这下应该知道为什么提示status_code=401了。因为你只是请求了登录接口,然后就继续执行下面的计算账单了,计算账单这个请求的cookie(令牌)呢?没有,那么不好意思,服务器就不会认你,直接拒绝。

常见的解决方法有两种:

方法1:在登录请求后面加个后置处理器-->正则提取表达器,把登录后response中的cookie提取出来,然后当做一个参数塞进计算账单的Sampler中。

方法2:通过抓包等方式获取登录后的cookie,然后在线程组下面加个配置元件-->HTTP Cookie管理器,把Cookie写进去,这样这个线程组中的所有Sampler执行的时候都会带上这里面的参数。(注意cookie的有效期)

  具体实现细节就不说了,都是Jmeter基础中的基础,百度一下【Jmeter 正则提取】【Jmeter Cookie管理器】就行。

 

____雪中悍刀行

转载于:https://www.cnblogs.com/zichuan/p/9090740.html

你可能感兴趣的文章
spring IOC装配Bean(注解方式)
查看>>
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty's Blocks
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
django知识点总结
查看>>
C++ STL stack、queue和vector的使用
查看>>
使用Reporting Services时遇到的小问题
查看>>
约瑟夫问题
查看>>
Arduino 报错总结
查看>>
树莓派Android Things物联网开发:树莓派GPIO引脚图
查看>>
矩阵快速幂---BestCoder Round#8 1002
查看>>
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>