django post请求 403错误解决方法

admin5个月前未分类75

 第一次用Django做项目,遇到了很多问题。

  今天遇到的问题是Django在处理post请求时多次出现403错误。

  我先描述一下问题出现的环境:我用Django写了一个web服务端,姑且称它为API吧。我在实际测试中发现,通过get方式可以从API中获得数据,但是post方式却无法获取数据,客户端显示服务器端出现403错误。

  我找不出什么原因,只好新建了一个表单来测试post请求,我发现通过表单发送post请求时,页面显示403错误:Forbidden CSRF verification failed. Request aborted.  我在网上查了一下,大多数人的解决方式是:在settings.py里面的MIDDLEWARE_CLASSES中加入‘django.middleware.csrf.CsrfResponseMiddleware’,我测试了一下,加入上面的代码之后,表单提交确实没有问题。但是我程序中调用API时,API仍然会返回403错误。我查了一下API中的代码,确定不是我写的代码的问题。然后我就疑惑了。不过我有一种感觉,那就是settings.py里面的MIDDLEWARE_CLASSES的配置有问题。我又在网上查了一下,有人说把‘django.middleware.csrf.CsrfViewMiddleware’,去掉可以解决post方式出现的403错误。我试了一下,还真可以。

 

现在总结一下解决方法:

1. 在settings.py里面的MIDDLEWARE_CLASSES中加入“‘django.middleware.csrf.CsrfResponseMiddleware’,”;

2. 在settings.py里面的MIDDLEWARE_CLASSES中去掉“‘django.middleware.csrf.CsrfViewMiddleware’,”。

如果是解决表单提交时的出现的403错误“Forbidden CSRF verification failed. Request aborted.”,上面的两种方式都可以解决,如果在其他程序里面单独通过post方式请求数据,那就只能用第二种方式解决。

另外我想补充的就是:第二种方式不需要以第一种方式为前提,也就是在去掉 “’django.middleware.csrf.CsrfViewMiddleware’,”后可以不用加入“’django.middleware.csrf.CsrfResponseMiddleware’”


相关文章

XML文件基础语句

using System.Xml;//初始化一个xml实例XmlDocument xml=new XmlDocument();//导入指定xml文件xml.Load(path);xml.Load(Ht...

西南交大峨眉校区外国语系,请问西南交大的外国语学院在成都还是峨眉啊?

啊啊啊啊啊急…马上就要填志愿了,结果有人告诉我如果学外国语言文学类是在峨眉就读??请问是真的吗?网上答案也是五花八门的标准答案:外国语学院在犀浦,峨眉就一个商务英语!具体:峨眉山市峨眉校区就读的专业:...

前端

http://www.yyyweb.com/...

利用PDF.js做页面优化,pdf实践

利用PDF.js做页面优化,去掉背景颜色;viewer.css里面:background-color:rgba(0,0,0,1);viewer.Container.pdfPresentationMod...

在django中使用MySQL数据库(一)

在django中使用MySQL数据库(一)

DATABASES = {    'default': {        'ENGINE': 'dj...

JS之DOM事件类型总结大全

unload:事件在用户退出页面时发生    window.onload = function(){      return "页面关闭!";    };onblur:失去焦点发生...