django post请求 403错误解决方法

--摘web

  第一次用Django作项目,遇到了不少问题。django

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

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

  我找不出什么缘由,只好新建了一个表单来测试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错误。我试了一下,还真能够。测试

 

如今总结一下解决方法:spa

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

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

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

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

相关文章
相关标签/搜索