Fixed #9163 - CsrfMiddleware needs to reset ETag header
Thanks to carljm for report and patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@11650 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
c44fdf6a1e
commit
a02a6fab66
|
@ -101,7 +101,13 @@ class CsrfResponseMiddleware(object):
|
||||||
"' /></div>")
|
"' /></div>")
|
||||||
|
|
||||||
# Modify any POST forms
|
# Modify any POST forms
|
||||||
response.content = _POST_FORM_RE.sub(add_csrf_field, response.content)
|
response.content, n = _POST_FORM_RE.subn(add_csrf_field, response.content)
|
||||||
|
if n > 0:
|
||||||
|
# Since the content has been modified, any Etag will now be
|
||||||
|
# incorrect. We could recalculate, but only is we assume that
|
||||||
|
# the Etag was set by CommonMiddleware. The safest thing is just
|
||||||
|
# to delete. See bug #9163
|
||||||
|
del response['ETag']
|
||||||
return response
|
return response
|
||||||
|
|
||||||
class CsrfMiddleware(CsrfViewMiddleware, CsrfResponseMiddleware):
|
class CsrfMiddleware(CsrfViewMiddleware, CsrfResponseMiddleware):
|
||||||
|
|
|
@ -22,12 +22,12 @@ middleware into your list of installed middleware.
|
||||||
How to use it
|
How to use it
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Add the middleware ``'django.contrib.csrf.middleware.CsrfMiddleware'`` to
|
Add the middleware ``'django.contrib.csrf.middleware.CsrfMiddleware'`` to your
|
||||||
your list of middleware classes, :setting:`MIDDLEWARE_CLASSES`. It needs to process
|
list of middleware classes, :setting:`MIDDLEWARE_CLASSES`. It needs to process
|
||||||
the response after the SessionMiddleware, so must come before it in the
|
the response after the SessionMiddleware, so must come before it in the list. It
|
||||||
list. It also must process the response before things like compression
|
also must process the response before things like compression or setting of
|
||||||
happen to the response, so it must come after GZipMiddleware in the
|
ETags happen to the response, so it must come after GZipMiddleware,
|
||||||
list.
|
CommonMiddleware and ConditionalGetMiddleware in the list.
|
||||||
|
|
||||||
The ``CsrfMiddleware`` class is actually composed of two middleware:
|
The ``CsrfMiddleware`` class is actually composed of two middleware:
|
||||||
``CsrfViewMiddleware`` which performs the checks on incoming requests,
|
``CsrfViewMiddleware`` which performs the checks on incoming requests,
|
||||||
|
|
Loading…
Reference in New Issue