文章目录
背景介绍
晚上在测试一个接口,一直用网页调试太麻烦了,所以尝试用postman测试。
这次的项目没有向上次一样设置跨域,那应该如何处理这个问题呢?
(再次吐槽百度,搜索出来都是要人直接关掉csrf中间件的。。这为了不上厕所你就不吃东西了??重复来重复去,都是用的同一篇文章。)
解决步骤
我尽量把步骤写的详细一点,所以大家还请耐心看。
1.获取cookie,并设置PostMan全局变量
先通过get请求来获取csrftoken的cookie,大家都很熟悉了,POST的验证比GET要严格的多,上次我们说跨域问题csrftoken都是要通过get来获取的。
同时,在请求的Tests标签栏出填写下面的代码,目的是将csrftoken的值设置为PostMan的全局变量,省的后面一直复制。
var csrf_token = postman.getResponseCookie("csrftoken").value
postman.clearGlobalVariable("csrftoken");
postman.setGlobalVariable("csrftoken", csrf_token);
设置成这样:
然后在右边的眼睛这里我们就可以看到我们设置的环境变量了。
这样我们就设置成功了,那要怎么用呢?
2.把csrftoken设置到post请求的参数中
转到你要测试的post请求中,Body中添加参数csrfmiddlewaretoken:{{csrftoken}}
(form-data和x-www-form-urlencoded测试过都可以)
这样就可以把token带到post请求的参数中。
3.添加Referer头
本文最重要的一步,要配置一个Referer头,把这个头设置成和你的访问地址。
记住一定要加上https://这个头,单纯的host不行。
记住一定要加上https://这个头,单纯的host不行。
记住一定要加上https://这个头,单纯的host不行。
为啥要设置这个嘞,其实你仔细看看403的报错里面就有说到这个头的问题。再看一遍它的报错,唉我就是吃了这个亏,英文苦手老是懒得看问题,直接去百度搜,结果被百度坑了一次又一次。
CSRF verification failed. Request aborted.
You are seeing this message because this HTTPS site requires a “Referer header” to be sent by your Web browser, but none was sent. This header is required for security reasons, to ensure that your browser is not being hijacked by third parties.
If you have configured your browser to disable “Referer” headers, please re-enable them, at least for this site, or for HTTPS connections, or for “same-origin” requests.
我是再次心累的llsxily,你可以叫我橘子。
版权归原作者 llsxily 所有, 如有侵权,请联系我们删除。