当前位置: 代码网 > 科技>操作系统>Windows > POSTMAN解决CSRF问题小技巧

POSTMAN解决CSRF问题小技巧

2024年08月02日 Windows 我要评论
Postman使用小技巧

参考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,就这么简单。
在这里插入图片描述

解决办法有两个:

  1. 改http为https,相应的端口也改掉,token一样要fetch和填写
  2. 加上参数cookie
    这个就是在填写token的同时,使用参数cookie,把两个cookie用分号 ‘;’ 拼一下,填到post参数里
    在这里插入图片描述
    在这里插入图片描述

这样就可以正常post,但每次post前要先用get取一下token和cockie,那有没有简单方便的办法呢,有,写个小脚本,用环境变量来填值。

如何利用postman中的“环境变量”来自动执行post api调用

step1: 创建新环境environment

在这里插入图片描述

step2: 创建新环境变量environment variable

也就是上面第二个方式,这里我们需要两个变量,‘xcsrftoken’和‘cookie’
在这里插入图片描述
这里就相当于建了两个全局变量

step3 建两个request,一个用来get token和cookie,一个用来post
  1. get
    在这里插入图片描述
    在这里插入图片描述
    这里别忘了加这个fetch来取token
    最关键的地方就是在这写个小脚本来取值赋给两个环境变量
    在这里插入图片描述
//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)
  1. post
    在这里插入图片描述
    在这里插入图片描述
    在header加入这两个参数,不过value是用的变量
    再执行吧,肯定没问题了。
    还有,你造吗,一组request是可以指执行的,选中这个collection,直接点run
    在这里插入图片描述
    在这里插入图片描述
    这里也有一些可控制的参数,自己研究吧
    下面是执行的结果,可以看到每一个request的执行结果
    在这里插入图片描述
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com