在对Carte+kettle的性能测试过程中,通过在loadrunner中用web_set_user("cluster", "cluster","172.17.2.89:8080");可以登录carte服务页面,但是压力测试过程中发现报告中产生了大量的HTTP 401请求。虽然这个错误不影响最终的测试,但是让追求完美的我,感觉不舒服,总觉得哪里有个重要事情我没搞明白。

通过Fiddler工具也能捕捉到这个401错误,但是登录成功后,接着就是HTTP 200,这和loadrunner返回结果一致(先报401,接着就报200)。

这是为什么呢,难道是Carte服务有问题?带着这个问题上网找相关资源,同时与开发一起探讨,最终得到一个比较有说服力的解答如下:

------------------------------------------------------------------------------------------------------------------------------------------------------------------

关于BASIC认证的过程

1.  客户端向服务器请求数据,请求的内容可能是一个网页或者是一个其它的MIME类型,此时,假设客户端尚未被验证,则客户端提供如下请求至服务器:

Get /index.html HTTP/1.0
Host:www.google.com

2.  服务器向客户端发送验证请求代码401,服务器返回的数据大抵如下:

HTTP/1.0 401 Unauthorised
Server: SokEvo/1.0
WWW-Authenticate: Basic realm="google.com"
Content-Type: text/html
Content-Length: xxx

3.  当符合http1.0或1.1规范的客户端(如IE,FIREFOX)收到401返回值时,将自动弹出一个登录窗口,要求用户输入用户名和密码。

4.  用户输入用户名和密码后,将用户名及密码以BASE64加密方式加密,并将密文放入前一条请求信息中,则客户端发送的第一条请求信息则变成如下内容:

Get /index.html HTTP/1.0
Host:www.google.com
Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxx
注:xxxx....表示加密后的用户名及密码。

5.  服务器收到上述请求信息后,将Authorization字段后的用户信息取出、解密,将解密后的用户名及密码与用户数据库进行比较验证,如用户名及密码正确,服务器则根据请求,将所请求资源发送给客户端

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

说明这个401错误是由HTTP BasicAuthenticator认证机制决定的,虽然得到了解答,但我还是不满意,如何才能不报这个错呢,对比了一下Jmeter,就发现Jmeter没有这个问题,因为Jmeter通过加HTTP授权管理器就能解决,如下所示:

对比loadrunner的web_set_user函数,我们会发现,Loadrunner正是少了这个BASIC_DIGEST属性,通过网上找资料,发现一个英文的资料有很明确的说明,参考链接如下

https://ptfrontline.wordpress.com/2009/12/23/loadrunner-http-401-authentication/

针对这上面英文资料说明,我就在web_set_user("cluster", "cluster","172.17.2.89:8080");后面再加一句web_set_sockets_option("INITIAL_BASIC_AUTH","1"); 然后回放脚本,不再报401错误,很正常的显示出HTTP 200,而且直接马上显示完美的 Show status !  给自己鼓个掌!!!!!

最后提供一下http 基本认证登录的脚本以供大家参考:

web_set_user("cluster", 
                "cluster",  //r_decrypt("58cf7265b1677820107f74"), //可以选择对密码加密
                "172.17.2.89:8080");

web_set_sockets_option("INITIAL_BASIC_AUTH","1");

web_url("172.17.2.89:8080", 
                  "URL=http://172.17.2.89:8080/", 
                  "Resource=0", 
                  "RecContentType=text/html", 
                  "Referer=", 
                  "Snapshot=t2.inf", 
                  "Mode=HTTP", 
       LAST);

 

如何在Loadrunner11中解决HTTP BASIC认证登录报401的问题的更多相关文章

  1. 如何在 Linux 中配置基于密钥认证的 SSH

    什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在 ...

  2. 如何在CSS中解决长英文单词的页面显示问题?CSS3

    简言 在页面排版中,经常遇到长英文单词溢出段落容器的情况,如何解决该问题?现编制如下对比演示程序: 演示程序 42du.cn-在线演示程序 部分html代码 <div class="b ...

  3. 如何在 pyqt 中解决国际化 tr() 函数不起作用的问题

    前言 有些时候我们在父类中使用了 self.tr('XXX'),使用 Qt Linguist 完成翻译并导出 qm 文件后,发现子类中仍然是英文原文.比如下面这段代码: class AlbumCard ...

  4. 如何在 iOS 中解决循环引用的问题

    稍有常识的人都知道在 iOS 开发时,我们经常会遇到循环引用的问题,比如两个强指针相互引用,但是这种简单的情况作为稍有经验的开发者都会轻松地查找出来. 但是遇到下面这样的情况,如果只看其实现代码,也很 ...

  5. 如何在 pyqt 中解决启用 DPI 缩放后 QIcon 模糊的问题

    问题描述 如今显示器的分辨率越来越高,如果不启用 DPI 缩放,软件的字体和图标在高分屏下就会显得非常小,看得很累人.从 5.6 版本开始,Qt 便能支持 DPI 缩放功能,Qt6 开始这个功能是默认 ...

  6. 解决spring+shiro cacheManager 登录报错

    一.项目启动,登录报错 org.springframework.beans.factory.BeanCreationException: Error creating bean with name ' ...

  7. [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic认证

    很多情况下目标Action方法都要求在一个安全上下文中被执行,这里所谓的安全上下文主要指的是当前请求者是一个经过授权的用户.授权的本质就是让用户在他许可的权限范围内做他能够做的事情,授权的前提是请求者 ...

  8. 如何在Dreamweaver中使用emmet

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3666 一.emmet ...

  9. 利用自定义的AuthenticationFilter实现Basic认证

    [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic认证   很多情况下目标Action方法都要求在一个安全上下文中被执行,这里所谓的安全上下文主要指的是当前 ...

随机推荐

  1. 利用Calendar类测试电脑运行速度

    今天学习了很多新知识! 这里使用了Calender类来获取系统时间,并计算循环1w次的时间,判断电脑处理时间. import java.util.Calendar; public class Arra ...

  2. 一段程序的人生 第10章: server

    从第0章開始看 第拾章 server     一切基本安顿下来,我開始认真的检阅一下我所栖身的文件夹.来到了外面的大世界,果然不一样.越是细致查看越是认为这里真是一个再好只是的地方. 这个文件夹里面有 ...

  3. Openstack能解决这些问题吗?请各位大侠一起来讨论

    1.10万规模的虚拟机,每一个虚拟机能够在不论什么一个计算节点上启动,该怎样做?计算,存储,网络都是怎么拉通与配合的? 2.用户怎样自己定义业务网络,怎样解决网络不够用的情况?正常就4096个vlan ...

  4. java 页面传输中文乱码解决方式

    post 中文乱码解决方案 接受数据的时候设置 request.setCharacterEncoding("utf-8");//编码必须和页面编码一致 页面设置 <%@pag ...

  5. 0x6A 网络流初步

    CH Round #17-C 这个算是一个技能点吧,不点不会,点了就没什么了.懒得写看书吧书上的1应该是0... 我又回来了太懒了不想翻书还是写写吧 必须边的判定条件:该边流量为0且两端的点在残余网络 ...

  6. RMAN异机恢复实验---转载

    一.RMAN异机恢复实验 2011年3月23日00:44 1.环境介绍: 主机1: 操作系统 REDHAT5.5 IP地址 172.16.1.120 主机名 sigle 数据库版本 10.2.0.4 ...

  7. bzoj1179 [Apio2009]Atm——缩环最长路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1179 tarjan 缩环,然后求到有酒吧的点的最长路即可: 但一开始想缩环后用拓扑序求答案, ...

  8. vmware centos7 没有网络设备

    vmware centos7 没有网络设备 选择VMware 虚拟机模拟器为CentOS 64 即可;

  9. Redis(四)-配置

    Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. 语法 Redis CONFIG 命令格式如下: ...

  10. POJ 1082---->一个神一般的题

    代码只有10行,反正我是看了题解才知道的. 嗯 首先 看到这个题, BFS+一堆判断(什么平年闰年跨年各种乱搞肯定能搞出来,但是Code length就不一定了)... 然后呢 就看到了这个题解 从后 ...