Fixed #25900 -- Fixed regression in CommonMiddleware ETag support.
This commit is contained in:
parent
5bc881541c
commit
6be9589eb3
|
@ -120,7 +120,9 @@ class CommonMiddleware(object):
|
|||
if response.has_header('ETag'):
|
||||
return get_conditional_response(
|
||||
request,
|
||||
etag=response['ETag'],
|
||||
# get_conditional_response() requires an unquoted version
|
||||
# of the response's ETag.
|
||||
etag=response['ETag'].strip('"'),
|
||||
response=response,
|
||||
)
|
||||
|
||||
|
|
|
@ -19,3 +19,6 @@ Bugfixes
|
|||
|
||||
* Fixed a state bug when migrating a ``SeparateDatabaseAndState`` operation
|
||||
backwards (:ticket:`25896`).
|
||||
|
||||
* Fixed a regression in ``CommonMiddleware`` causing ``If-None-Match`` checks
|
||||
to always return HTTP 200 (:ticket:`25900`).
|
||||
|
|
|
@ -291,6 +291,16 @@ class CommonMiddlewareTest(SimpleTestCase):
|
|||
res = StreamingHttpResponse(['content'])
|
||||
self.assertFalse(CommonMiddleware().process_response(req, res).has_header('ETag'))
|
||||
|
||||
@override_settings(USE_ETAGS=True)
|
||||
def test_if_none_match(self):
|
||||
first_req = HttpRequest()
|
||||
first_res = CommonMiddleware().process_response(first_req, HttpResponse('content'))
|
||||
second_req = HttpRequest()
|
||||
second_req.method = 'GET'
|
||||
second_req.META['HTTP_IF_NONE_MATCH'] = first_res['ETag']
|
||||
second_res = CommonMiddleware().process_response(second_req, HttpResponse('content'))
|
||||
self.assertEqual(second_res.status_code, 304)
|
||||
|
||||
# Other tests
|
||||
|
||||
@override_settings(DISALLOWED_USER_AGENTS=[re.compile(r'foo')])
|
||||
|
|
Loading…
Reference in New Issue