问题
cookie 和token 同时存在,token设置了关联,cookie没设置关联,多人并发执行场景报错。
分析
cookie 是 浏览器本地的缓存的值,同时只能存在1个,多人同时登陆,浏览器保存的是最后一个user的cokie ,所以报错。 需要将 user、token、cookie 三者 对应起来。 token 和cookie 有一部分的值是相同的。
解决思路
将cookie、token写成参数,后续脚本直接调用参数 参数设置:
web_add_auto_header("token", //自动往后续调用接口的header中添加 token
"bearer;{Cookie}");
web_add_cookie("ParametersCookie=Ture;path=/;domain=www.fruitease.com;token-test={Cookie}"); //设置cookie
注意:1、参数取值要根据对应的User取值,故 user和cookie(token)的顺序要在同一行 2、登陆账号可通过 RedisDesktopManager 获取
函数详解:web_add_cookie()
web_add_cookie(“ParametersCookie=Ture;path=/;domain=www.fruitease.com;token-test={Cookie}”); //设置cookie 函数原型:int web_add_cookie( const char *Cookie);
其中cookie参数列表格式添加如下: name=VALUE; (required) //需要添加的cookie变量名=变量值,必须有 domain=DOMAIN_NAME; (required) 需要cookie的域名,必须有 expires=DATE; 失效日期 可以可无,最好有。 其实该字段是根据服务端设置的,服务端设置可以保存多长时间,就保存多长时间,Lr在模拟时该时间一般要在服务端允许的时间范围内,但是不在范围内好像也不报错,估计也不会有用,有的cookie是根据session来的,比如截图中的cookie有效期为end of session,意思就是session死了,cookie也就失效了,所以你设置再长时间也没有用啦。 path=PATH;(default path is “/”) //cookie的适应范围, /代表该cookie从该程序的根目录起适用,lr中按照此设置即可
|