博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSRF verification failed. Request aborted.
阅读量:5871 次
发布时间:2019-06-19

本文共 1788 字,大约阅读时间需要 5 分钟。

在使用Django提交Post表单时遇到如下错误:

[plain]
  1. Forbidden (403)  
  2. CSRF verification failed. Request aborted.  

原因在"帮助"中已经写的很清楚了。

 

一般而言,这可以发生时,有一个真正的跨站请求伪造,或当Django的CSRF的机制还没有正确使用。 对于POST表单,您需要确保:

*该视图功能使用模板RequestContext的。

*在模板中,有{%csrf_token%}(模板网址标记在每个邮局形式的内部目标。

*如果您不使用CsrfViewMiddleware,那么你必须在view中使用csrf_protect,

您看到此页面的帮助部分,因为你在settings中设置了 DEBUG = True。 改变这种状况为False,只有最初的错误信息会被显示。您可以使用CSRF_FAILURE_VIEW设置自定义此页面。

 

所以,解决方法:

 

1、在表单Form里加上{% csrf_token %}

2、在Settings里的MIDDLEWARE_CLASSES增加配置:(一般默认就有)

'django.middleware.csrf.CsrfViewMiddleware',

#'django.middleware.csrf.CsrfResponseMiddleware',

1.2.X示例:

[python]
  1. MIDDLEWARE_CLASSES = (  
  2.     'django.middleware.common.CommonMiddleware',  
  3.     'django.contrib.sessions.middleware.SessionMiddleware',  
  4.     'django.middleware.csrf.CsrfViewMiddleware',  
  5.     'django.middleware.csrf.CsrfResponseMiddleware',  
  6.     'django.contrib.auth.middleware.AuthenticationMiddleware',  
  7.     'django.contrib.messages.middleware.MessageMiddleware',  
  8. )  

 

3、在view中的方法上面加上@csrf_protect注解。同时使用RequestContext代替Context。示例:

----------------------------------------------------------------------------------------------------------------------------------

@csrf_protect    

def login(request):

...

return render_to_response('index.html',context_instance=RequestContext(request))

----------------------------------------------------------------------------------------------------------------------------------

 

详情: 

 

 


扩展阅读:

 

django.contrib.csrf 开发包只有一个模块: middleware.py 。该模块包含了一个 Django 中间件类——CsrfMiddleware ,该类实现了 CSRF 防护功能。

 
 

在设置文件中将 'django.contrib.csrf.middleware.CsrfMiddleware' 添加到 MIDDLEWARE_CLASSES 设置中可激活 CSRF 防护。 该中间件必须在 SessionMiddleware 之后 执行,因此在列表中 CsrfMiddleware 必须出现在SessionMiddleware 之前 (因为响应中间件是自后向前执行的)。 同时,它也必须在响应被压缩或解压之前对响应结果进行处理,因此 CsrfMiddleware 必须在 GZipMiddleware 之后执行。一旦将它添加到MIDDLEWARE_CLASSES设置中,你就完成了工作。

转载地址:http://rdxnx.baihongyu.com/

你可能感兴趣的文章
CSRF防护
查看>>
4岁童要嫁妆:等我结婚你可得给我买宝马
查看>>
定制属于自己的 linux 内核(Step 1)
查看>>
shell中变量赋值的几种方式 + - = ?
查看>>
Tab键的适当设置
查看>>
mysqlpump —mysql5.7官方表级别并发逻辑备份工具
查看>>
龙存存储部署管理维护文档
查看>>
社会化媒体营销 @ 微信营销用户群分析
查看>>
正确、错误信息输出到文件
查看>>
我的友情链接
查看>>
centos搭建LNMP+LAMP环境+(jdk+tomcat+mysql)
查看>>
Git管理Puppet打造统一配置管理
查看>>
LINUX命令大全
查看>>
Using VLANs with OVS and libvirt
查看>>
俞敏洪谈创业:成功者需要具备四种能力
查看>>
我的友情链接
查看>>
CentOS中安装subversion,并使用svn+ssh访问
查看>>
VB中UTF8转Unicode编码
查看>>
我的友情链接
查看>>
颜色混合opengl
查看>>