Fixed #19705 -- Set proper headers on conditional Not Modified responses.

This commit is contained in:
Kevin Christopher Henry 2016-10-11 00:08:37 -04:00 committed by Tim Graham
parent b2f9db1637
commit bd7237d7ec
2 changed files with 36 additions and 7 deletions

View file

@ -614,6 +614,28 @@ class ConditionalGetMiddlewareTest(SimpleTestCase):
self.resp = ConditionalGetMiddleware().process_response(self.req, self.resp)
self.assertEqual(self.resp.status_code, 400)
def test_not_modified_headers(self):
"""
The 304 Not Modified response should include only the headers required
by section 4.1 of RFC 7232, Last-Modified, and the cookies.
"""
self.req.META['HTTP_IF_NONE_MATCH'] = self.resp['ETag'] = '"spam"'
self.resp['Date'] = 'Sat, 12 Feb 2011 17:35:44 GMT'
self.resp['Last-Modified'] = 'Sat, 12 Feb 2011 17:35:44 GMT'
self.resp['Expires'] = 'Sun, 13 Feb 2011 17:35:44 GMT'
self.resp['Vary'] = 'Cookie'
self.resp['Cache-Control'] = 'public'
self.resp['Content-Location'] = '/alt'
self.resp['Content-Language'] = 'en' # shouldn't be preserved
self.resp.set_cookie('key', 'value')
new_response = ConditionalGetMiddleware().process_response(self.req, self.resp)
self.assertEqual(new_response.status_code, 304)
for header in ('Cache-Control', 'Content-Location', 'Date', 'ETag', 'Expires', 'Last-Modified', 'Vary'):
self.assertEqual(new_response[header], self.resp[header])
self.assertEqual(new_response.cookies, self.resp.cookies)
self.assertNotIn('Content-Language', new_response)
class XFrameOptionsMiddlewareTest(SimpleTestCase):
"""