【LoadRunner】Http协议下单点登录的URL重定向问题

     现在越来越多的项目都是多系统部署在多个环境但归属在一个项目,需要进行单点登录。
     有一次协助别人做性能测试时,就遇到了单点登录的问题,脚本回放一直无法成功。
     场景内容是:单点登录之后,点击一个系统进入,进行一个模块的新增保存的业务操作。
     嘛……就是这样一个简单的场景,在重跑脚本时发现无法再新增一条记录,就发现脚本其实没有成功执行,就需要进行脚本的调试了。
     当时因为测试时间比较紧急,就先绕过了单点登录,而是选择单系统做个登录页面进行操作新增保存动作,脚本是可以成功的。这也是备选方法之一

    若是不绕过这个单点登录,可以尝试看以下内容:

     首先先了解一下URL重定向的概念
     URL重定向:URL redirection,或称网址重定向或网域名称转址,是指当使用者浏览某个网址时,将他导向到另一个网址的技术。

   就是把一个URL重定向到另一个URL上去。

   常见的重定向有301(永久重定向)及302(暂时重定向)

   简单来说就是很多网站都有实现单点登录的功能,比如百度,淘宝这种平时用的比较多的网站。

举个栗子 ~~~~~~~~~~~~~~~~~~~~~

例:web_submit_data("login", 
"Action=http://59.60.9.7/platformcas/login;jsessionid={PeopleSoftJSessionID2}?service=http%3A%2F%2F59.60.9.7%3A18081%2Fplatform-base%2Fplatformbase%2Fview%2Findex.jsp", 
"Referer=http://59.60.9.7/platformcas/login?service=http%3A%2F%2F59.60.9.7%3A18081%2Fplatformbase%2Fplatformbase%2Fview%2Findex.jsp", 
"Name=loginMethodCacheKey","Value={Key}", ENDITEM, 
"Name=username", "Value=username", ENDITEM, 
"Name=password", "Value=password", ENDITEM, 
"Name=lt", "Value={lt}", ENDITEM, 
EXTRARES,LAST); 

上面的脚本session,key,lt已经做了关联,关联的具体操作可以查看本人的其他篇博客~~~

在脚本录制完毕后回放脚本,会在Replay log中发现Redirecting, To location字样,或切换到TreeHTTP View,查看该脚本

单点登录重定向

可以看到重定向的操作,会发现截图的Path的URL地址都带有动态变化的参数,这就意味着你每次的操作,服务器都会给你返回不一样的URL地址(因为参数每次迭代的时候都不一样),所以我们不能拿这样固定的脚本进行重复的操作,因为是无法成功的。

那解决方法是什么呢?

这时候我们就可以去关闭URL重定向

去除重定向

web_set_option("MaxRedirectionDepth", "0", LAST );

这时候把重定向给关闭了之后,就要我们去手工做url的访问

语法:Web_url(const char *name, const char * url, <Lists of Attributes>, [EXTRARES,<Lists of Resource Attributes>,LAST) 


例:web_url("getLocation1",
   “URL={Location}”,                   //此处URL已做参数化
             "TargetFrame=",
     "Resource=0",
     "Referer=http://59.60.9.7/platform-cas/login?service=http%3A%2F%2F59.60.9.7%3A18081%2Fplatform-base%2Fplatformbase%2Fview%2Findex.jsp",
    LAST);

{Location}是前面做了关联获取到的值,然后在url手工请求中做了参数化,这样就可以进行该地址的一个访问请求,可以理解成我们帮程序做了重定向,但是这时候呢,我们是拿了动态关联到的数据做的重定向,所以每次迭代都能成功。

如果单点登录的重定向有多次,就可以一直往下取location,到最终获取到我们要的另一个session,什么?有另一个session?

是的……单点登录后到了一个系统中操作新增保存之前,会产生一个新的session值,之前做的所有工作就是为了取到这个隐藏颇深的session,这样才能在后面的请求当中将这个新的session值做参数化。

如有疑问,可以在评论问我~
欢迎提问。
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值