Django+PostMan的post请求403了应该怎么办?

背景介绍

晚上在测试一个接口,一直用网页调试太麻烦了,所以尝试用postman测试。
这次的项目没有向上次一样设置跨域,那应该如何处理这个问题呢?
(再次吐槽百度,搜索出来都是要人直接关掉csrf中间件的。。这为了不上厕所你就不吃东西了??重复来重复去,都是用的同一篇文章。)
熟悉的403

解决步骤

我尽量把步骤写的详细一点,所以大家还请耐心看。

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,你可以叫我橘子。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值