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

  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示例:

  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))

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

详情:

https://docs.djangoproject.com/en/1.2/ref/contrib/csrf/

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf


扩展阅读:

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

 
 

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

CSRF verification failed. Request aborted.的更多相关文章

  1. Django提交POST表单“CSRF verification failed. Request aborted”问题的解决

    1.环境 python 3.4 Django 1.7 Visual Studio 2015 PTVS 2.问题 提交表单,出现以下错误: CSRF verification failed. Reque ...

  2. django程序报错CSRF verification failed. Request aborted.

    django程序的html页面中form的method='post'的时候报错 Forbidden (403) CSRF verification failed. Request aborted.He ...

  3. django csrf使用教程,解决Forbidden (403)CSRF verification failed. Request aborted.

    Django版本号:1.11.15 django中post请求报错:Forbidden (403)CSRF verification failed. Request aborted. HelpReas ...

  4. Django1.8:403错误:CSRF verification failed. Request aborted.

    问题:Django 403错误:CSRF verification failed. Request aborted.     原因:需要加cookie验证 解决方法: 1.在view.py中增加 fr ...

  5. CSRF verification failed. Request aborted.错误解决办法

    在Django项目的页面,提交form表单POST请求时,会出现报错:CSRF verification failed. Request aborted. 需要在form表单中加:{% csrf_to ...

  6. Django中关于“CSRF verification failed. Request aborted”的问题

    遇到该问题的情境 在Django中采用Ajax提交表单,涉及到跨域问题. 解决措施 在html页面中的表单内添加如下代码: {% csrf_token %} 在视图函数所在的py文件中添加如下代码: ...

  7. Django 403错误:CSRF verification failed. Request aborted

    网上有解决办法,我自己的组合是: 一,FORM加标识 <form action="" method="post"> {% csrf_token %} ...

  8. django框架中form表单Post方法无法提交 Forbidden (403) CSRF verification failed. Request aborted.

    问题如图: 解决方法: 在视图函数中引入并使用装饰器 from django.views.decorators.csrf import csrf_exempt @csrf_exempt

  9. CSRF verification failed. Request aborted. 表单提交方法为POST时的报错

    本人所用Django版本为1.11,在设置请求方法为POST时,遇到标题中的错误,尝试了多种方法,最终通过下面的操作来修复: 在template文件中添加图中红框部分 接着,导入csrf_exempt ...

随机推荐

  1. cookie 用户第一次访问时执行

    <script type="text/javascript" src="/js/jquery.Cookies.js"></script> ...

  2. java抛出异常是怎么回事?

    一.Java异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如 ...

  3. 安装pypcap = 安装flex:the fast lexical analyser + 安装libpcap-1.7.4

    flex flex is a tool for generating scanners 安装flex-2.6.0安装包 网址:https://sourceforge.net/projects/flex ...

  4. php isset() empty() 区别, 判断 变量存在与否神器

    先看PHP手册: bool empty ( mixed $var ) 判断一个变量是否被认为是空的.当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在.如果变量不存在的话,empty ...

  5. 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的

    [军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的   之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...

  6. razor 添加html5属性

    在 HTML5 中, 可以使用 data- 属性来表示用户数据,这些数据甚至可以是 JSON 格式的数据,对 Web 前端开发带来很大的方便. 在 MVC 的 Razor 中,可以使用匿名对象来生成定 ...

  7. linux进程查找及杀死

    根据进程名称查找 ps aux|grep python(进程名) 杀死进程: kill -s 9 进程id

  8. Linux下监控磁盘使用量并在超过阀值后自动发送报警邮件

    最近Linux服务器磁盘使用量经常到100%,直到影响到正常服务出现故障才会去注意,做不到防患于未然,今天在网上搜集了资料,加上自己修改,写了一个shell脚本用于实时监控磁盘使用量并在超过阀值后自动 ...

  9. nginx搭建http和rtmp协议的流媒体服务器

    nginx搭建http和rtmp协议的流媒体服务器 时间:2013-09-23 23:52来源:佚名 作者:本站 举报 点击:232次 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtm ...

  10. startActivityForResult的用法和demo

    [转]startActivityForResult的用法和demo 博客分类:  java 移动开发 有时候我们需要把A activity提交数据给B  activity处理,然后把结果返回给A 这种 ...