django 오류 - Reason given for failure: CSRF cookie not set.
Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF cookie not set.
In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
RequestContext
for the template, instead of Context
. {% csrf_token %}
template tag inside each POST form that targets an internal URL. CsrfViewMiddleware
, then you must use csrf_protect
on any views that use the csrf_token
template tag, as well as those that accept the POST data. You're seeing the help section of this page because you have
DEBUG = True
in your Django settings file. Change that to False
, and only the initial error message will be displayed. You can customize this page using the CSRF_FAILURE_VIEW setting.
인터넷에서 많은 분들이 그러더라고요.
settings에서.py 안에 있는 MIDDLEWARECLASSES에 추가
'django.middleware.csrf.CsrfResponseMiddleware',
하지만 내 문제는 여전하다. 하지만 많은 사람들이 그들의 문제는 이렇게 해결된다고 말한다.1.2 버전을 썼기 때문에 제가 1.4 버전을 썼어요.
나중에 홈페이지에 가세요.
https://docs.djangoproject.com/en/1.2/ref/contrib/csrf/
참조:
To enable CSRF protection for your views, follow these steps:
{% csrf_token %}
This should not be done for POST forms that target external URLs, sincethat would cause the CSRF token to be leaked, leading to a vulnerability.
In the corresponding view functions, ensure that the'django.core.context_processors.csrf' context processor isbeing used. Usually, this can be done in one of two ways:
-
Use RequestContext, which always uses'django.core.context_processors.csrf' (no matter what yourTEMPLATE_CONTEXT_PROCESSORS setting). If you are usinggeneric views or contrib apps, you are covered already, since theseapps use RequestContext throughout.
-
Manually import and use the processor to generate the CSRF token andadd it to the template context. e.g.:
from django.core.context_processors import csrf from django.shortcuts import render_to_response def my_view(request): c = {} c.update(csrf(request)) # ... view code here return render_to_response("a_template.html", c)
You may want to write your own render_to_response wrapper thattakes care of this step for you.
The utility script extras/csrf_migration_helper.py can help to automate thefinding of code and templates that may need to be upgraded. It contains fullhelp on how to use it.
그러나 문제는 여전하다. 나중에 또 다른 방식이 이 사이트에 있다.
o manually exclude a view function from being handled by either of the two CSRFmiddleware, you can use the csrf_exempt decorator, found in thedjango.views.decorators.csrf module. For example:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view(request):
return HttpResponse('Hello world')
Like the middleware, the csrf_exempt decorator is composed of two parts: acsrf_view_exempt decorator and a csrf_response_exempt decorator, foundin the same module. These disable the view protection mechanism(CsrfViewMiddleware) and the response post-processing(CsrfResponseMiddleware) respectively. They can be used individually ifrequired.
마침내 이 문제를 해결했다.
사실 나는 이 문제를 돌렸다. 왜냐하면django가 CSRF를 도입한 것은 크로스 시트 Request Forgeries 공격을 피하기 위해서였고, 위의 해결 방법은 이django의 기능을 마침 금지했기 때문이다.그래서 앞으로 꼼꼼히 연구해 이 기능을 잃지 않는 전제에서 표를 성공적으로 제출해야 한다.
끝나다
다음으로 이동:http://blog.csdn.net/huangxiansheng1980/article/details/7482591
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.