#18359: CSRF dosen't work
------------------------------+--------------------
     Reporter:  jollychang@…  |      Owner:  nobody
         Type:  Bug           |     Status:  new
    Component:  contrib.csrf  |    Version:  1.4
     Severity:  Normal        |   Keywords:
 Triage Stage:  Unreviewed    |  Has patch:  0
Easy pickings:  0             |      UI/UX:  0
------------------------------+--------------------
 $ cat view.py
 {{{#!python
 from django.shortcuts import render_to_response

 def test(request):
     if request.method == 'GET':
         return render_to_response('test.html')
     elif request.method == 'POST':
         return render_to_response('successful.html')

 }}}
 $ cat templates/test.html
 {{{
 <form action="." method="post">{% csrf_token %}
 <input type="submit" value="Submit" />
 </form>
 }}}
 $ cat settings.py
 {{{#!python

 MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
 }}}
 after submit \\
 {{{
 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:
 Your browser is accepting cookies.
 The view function uses RequestContext for the template, instead of
 Context.
 In the template, there is a {% csrf_token %} template tag inside each POST
 form that targets an internal URL.
 If you are not using 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.
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/18359>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to