381521 set Vary:Accept-Encoding header for content that might be compressed

This commit is contained in:
Greg Wilkins 2012-06-05 17:31:24 +02:00
parent b9a3c98055
commit e093732d40
3 changed files with 8 additions and 4 deletions

View File

@ -234,9 +234,7 @@ public abstract class AbstractCompressedStream extends ServletOutputStream
if (_response.isCommitted())
throw new IllegalStateException();
setHeader("Content-Encoding", _encoding);
setHeader("Vary","Accept-Encoding");
setHeader("Content-Encoding", _encoding);
if (_response.containsHeader("Content-Encoding"))
{
_out=_compressedOutputStream=createStream();

View File

@ -421,6 +421,9 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
boolean gzip=false;
if (!included.booleanValue() && _gzip && reqRanges==null && !endsWithSlash )
{
// Tell caches that response may vary by accept-encoding
response.setHeader(HttpHeaders.VARY,HttpHeaders.ACCEPT_ENCODING);
// Should we vary this response according to accept-encoding?
String accept=request.getHeader(HttpHeaders.ACCEPT_ENCODING);
if (accept!=null && accept.indexOf("gzip")>=0)
gzip=true;
@ -497,7 +500,6 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
if (gzip)
{
response.setHeader(HttpHeaders.CONTENT_ENCODING,"gzip");
response.setHeader(HttpHeaders.VARY,HttpHeaders.ACCEPT_ENCODING);
String mt=_servletContext.getMimeType(pathInContext);
if (mt!=null)
response.setContentType(mt);

View File

@ -201,7 +201,11 @@ public class GzipFilter extends UserAgentFilter
{
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
// Inform caches that responses may vary according to Accept-Encoding
response.setHeader("Vary","Accept-Encoding");
// Should we vary this response according to Accept-Encoding
String compressionType = selectCompression(request.getHeader("accept-encoding"));
if (compressionType!=null && !response.containsHeader("Content-Encoding") && !HttpMethods.HEAD.equalsIgnoreCase(request.getMethod()))
{