赞
踩
参考note2597429
参考blog
你们有没有遇到过这样的情况,相同的API,在环境A里测试,HTTP GET和HTTP POST都可以正常使用,但换一个环境就不能用了,即使输入了用户名和密码,GET时fetch了token,POST时也填写了GET的token,还是会报CSRF token validation failed
的错误
这是和server的一个设置参数有关,用TCODE: SICF_SESSIONS
可以看到这个值,如果是0,就用HTTP,如果是1,就用HTTPS,就这么简单。
解决办法有两个:
这样就可以正常POST,但每次POST前要先用GET取一下token和cockie,那有没有简单方便的办法呢,有,写个小脚本,用环境变量来填值。
也就是上面第二个方式,这里我们需要两个变量,‘XCSRFToken’和‘Cookie’
这里就相当于建了两个全局变量
//Fetch CSRF token from response header
sToken = pm.response.headers.get("x-csrf-token")
//Set CSRF Token in environment variable
pm.environment.set("XCSRFToken", sToken);
//Get all the response header
aHeaders = pm.response.headers.all()
//Declare array for cookies
aCookies = [];
//Get all the cookie value
for(i=0;i<aHeaders.length;i++){
if(aHeaders[i].key == "set-cookie"){
aCookies.push(aHeaders[i].value)
}
}
//Concatenate all the cookie with semi-colon
sCookie = aCookies.join(";")
//Set cookie value to environment variable
pm.environment.set("Cookie",sCookie)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。