解决django开发中CSRF verification failed. Request aborted.的问题
2013-04-15 11:46
501 查看
在使用Django提交Post表单时遇到如下错误:
Forbidden (403)
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示例:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
3、在view中的方法上面加上@csrf_protect注解。同时使用RequestContext代替Context。示例:
----------------------------------------------------------------------------------------------------------------------------------
@csrf_protect
def login(request):
...
return
render_to_response('index.html',context_instance=RequestContext(request))
Forbidden (403)
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示例:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
3、在view中的方法上面加上@csrf_protect注解。同时使用RequestContext代替Context。示例:
----------------------------------------------------------------------------------------------------------------------------------
@csrf_protect
def login(request):
...
return
render_to_response('index.html',context_instance=RequestContext(request))
相关文章推荐
- 解决Django CSRF verification failed. Request aborted.的问题
- Django提交POST表单“CSRF verification failed. Request aborted”问题的解决
- Django POST请求 错误 forbidden(403) CSRF verification failed. Request aborted 解决方法
- 解决CSRF verification failed. Request aborted.的问题(转)
- 解决CSRF verification failed. Request aborted.的问题
- 解决Django 提交表单时403错误:CSRF verification failed. Request aborted .
- 解决CSRF verification failed. Request aborted.的问题
- 解决CSRF verification failed. Request aborted.的问题
- Django:Forbidden (403) CSRF verification failed. Request aborted. 解决之道
- 解决Django 提交表单时403错误:CSRF verification failed. Request aborted .
- Django CSRF verification failed. Request aborted.的解决办法
- 解决CSRF verification failed. Request aborted.的问题
- Django 403错误:CSRF verification failed. Request aborted
- CSRF verification failed. Request aborted.的解决办法
- [已解决]CSRF verification failed. Request aborted. CSRF token missing or incorrect.
- Django1.3 CSRF verification failed. Request aborted.
- Django 403错误:CSRF verification failed. Request aborted.
- django CSRF verification failed. Request aborted报错
- Django POST CSRF verification failed. Request aborted
- Django POST常见的错误:CSRF verification failed. Request aborted.