用jmeter post请求Django web 接口时返回403
用 jmeter 提交post 请求增加数据时,结果返回403,结果如下

问题原因分析:出现这个错误的原因主要是,跨站请求伪造。
简单来说就是,django框架为我们提供了一个中间件,用于处理跨站请求伪造的,假如某个用户从来没有登录过我们的网站就给我们网站post数据,这样是会被django这个中间件给阻挡,禁止请求。然后我们在开发web的时候可以给每一个登录的用户分配一个token。这个token会被写入到用户的cookie文件里面。然后下次用户post数据的时候,就会带上这个token。 因此如果没有token的用户就会被禁止post数据。
解决办法
方法1:在接口函数前添加装饰器@csrf_exempt
导入模块
from django.views.decorators.csrf import csrf_exempt
然后在接口函数中添加装饰器
@csrf_exempt
def add_event(request):
方法2:在settings.py文件中设置全局变量
在setting.py里面注释掉CSRF那一行

如果是解决表单提交时的出现的403错误“Forbidden CSRF verification failed. Request aborted.”,上面的两种方式都可以解决,如果在其他程序里面单独通过post方式请求数据,那就只能用第二种方式解决。
另外我想补充的就是:第二种方式不需要以第一种方式为前提,也就是在去掉 “’django.middleware.csrf.CsrfViewMiddleware’,”后可以不用加入“’django.middleware.csrf.CsrfResponseMiddleware’”

浙公网安备 33010602011771号