[Zope-Checkins] SVN: Zope/trunk/src/ZPublisher/ don't append Accept-Encoding to Vary header unnecessarily
Laurence Rowe
l at lrowe.co.uk
Sat Apr 25 18:49:54 EDT 2009
Log message for revision 99493:
don't append Accept-Encoding to Vary header unnecessarily
Changed:
U Zope/trunk/src/ZPublisher/HTTPResponse.py
U Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py
-=-
Modified: Zope/trunk/src/ZPublisher/HTTPResponse.py
===================================================================
--- Zope/trunk/src/ZPublisher/HTTPResponse.py 2009-04-25 18:14:30 UTC (rev 99492)
+++ Zope/trunk/src/ZPublisher/HTTPResponse.py 2009-04-25 22:49:53 UTC (rev 99493)
@@ -398,7 +398,9 @@
# was ignored anyway, so cache should not
# vary on it. Otherwise if not forced, cache should
# respect Accept-Encoding client header
- self.appendHeader('Vary','Accept-Encoding')
+ vary = self.getHeader('Vary')
+ if vary is None or 'Accept-Encoding' not in vary:
+ self.appendHeader('Vary','Accept-Encoding')
return self
def enableHTTPCompression(self,REQUEST={},force=0,disable=0,query=0):
Modified: Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py
===================================================================
--- Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py 2009-04-25 18:14:30 UTC (rev 99492)
+++ Zope/trunk/src/ZPublisher/tests/testHTTPResponse.py 2009-04-25 22:49:53 UTC (rev 99493)
@@ -180,7 +180,21 @@
'Set-Cookie: '
'violation="http://www.ietf.org/rfc/rfc2616.txt"\r\n')
+ def test_setBody_compression_vary(self):
+ # Vary header should be added here
+ response = self._makeOne()
+ response.enableHTTPCompression(REQUEST={'HTTP_ACCEPT_ENCODING': 'gzip'})
+ response.setBody('foo'*100) # body must get smaller on compression
+ self.assertEqual('Accept-Encoding' in response.getHeader('Vary'), True)
+ # But here it would be unnecessary
+ response = self._makeOne()
+ response.enableHTTPCompression(REQUEST={'HTTP_ACCEPT_ENCODING': 'gzip'})
+ response.setHeader('Vary', 'Accept-Encoding,Accept-Language')
+ before = response.getHeader('Vary')
+ response.setBody('foo'*100)
+ self.assertEqual(before, response.getHeader('Vary'))
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(HTTPResponseTests, 'test'))
More information about the Zope-Checkins
mailing list