404128 Add Vary headers rather than set them

This commit is contained in:
Greg Wilkins 2013-04-04 16:05:27 +11:00
parent df6e18cc00
commit 060389147b
3 changed files with 18 additions and 30 deletions

View File

@ -234,7 +234,7 @@ public abstract class AbstractCompressedStream extends ServletOutputStream
setHeader("Content-Encoding", _encoding); setHeader("Content-Encoding", _encoding);
if (_response.containsHeader("Content-Encoding")) if (_response.containsHeader("Content-Encoding"))
{ {
setHeader("Vary",_vary); addHeader("Vary",_vary);
_out=_compressedOutputStream=createStream(); _out=_compressedOutputStream=createStream();
if (_out!=null) if (_out!=null)
{ {
@ -269,7 +269,7 @@ public abstract class AbstractCompressedStream extends ServletOutputStream
if (_out == null || _bOut != null) if (_out == null || _bOut != null)
{ {
if (sendVary) if (sendVary)
setHeader("Vary",_vary); addHeader("Vary",_vary);
if (_wrapper.getETag()!=null) if (_wrapper.getETag()!=null)
setHeader("ETag",_wrapper.getETag()); setHeader("ETag",_wrapper.getETag());
@ -341,6 +341,11 @@ public abstract class AbstractCompressedStream extends ServletOutputStream
return encoding == null?new PrintWriter(out):new PrintWriter(new OutputStreamWriter(out,encoding)); return encoding == null?new PrintWriter(out):new PrintWriter(new OutputStreamWriter(out,encoding));
} }
protected void addHeader(String name,String value)
{
_response.addHeader(name, value);
}
protected void setHeader(String name,String value) protected void setHeader(String name,String value)
{ {
_response.setHeader(name, value); _response.setHeader(name, value);

View File

@ -454,7 +454,7 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
if (resource!=null && resource.exists() && !resource.isDirectory()) if (resource!=null && resource.exists() && !resource.isDirectory())
{ {
// Tell caches that response may vary by accept-encoding // Tell caches that response may vary by accept-encoding
response.setHeader(HttpHeaders.VARY,HttpHeaders.ACCEPT_ENCODING); response.addHeader(HttpHeaders.VARY,HttpHeaders.ACCEPT_ENCODING);
// Does the client accept gzip? // Does the client accept gzip?
String accept=request.getHeader(HttpHeaders.ACCEPT_ENCODING); String accept=request.getHeader(HttpHeaders.ACCEPT_ENCODING);

View File

@ -84,15 +84,6 @@ public class IncludableGzipFilter extends GzipFilter
{ {
return null; return null;
} }
@Override
protected void setHeader(String name, String value)
{
super.setHeader(name, value);
HttpServletResponse response = (HttpServletResponse)getResponse();
if (!response.containsHeader(name))
response.setHeader("org.eclipse.jetty.server.include." + name, value);
}
}; };
} }
}; };
@ -111,15 +102,6 @@ public class IncludableGzipFilter extends GzipFilter
{ {
return new GZIPOutputStream(_response.getOutputStream(),_bufferSize); return new GZIPOutputStream(_response.getOutputStream(),_bufferSize);
} }
@Override
protected void setHeader(String name, String value)
{
super.setHeader(name, value);
HttpServletResponse response = (HttpServletResponse)getResponse();
if (!response.containsHeader(name))
response.setHeader("org.eclipse.jetty.server.include." + name, value);
}
}; };
} }
}; };
@ -138,15 +120,6 @@ public class IncludableGzipFilter extends GzipFilter
{ {
return new DeflaterOutputStream(_response.getOutputStream(),new Deflater(_deflateCompressionLevel, _deflateNoWrap)); return new DeflaterOutputStream(_response.getOutputStream(),new Deflater(_deflateCompressionLevel, _deflateNoWrap));
} }
@Override
protected void setHeader(String name, String value)
{
super.setHeader(name, value);
HttpServletResponse response = (HttpServletResponse)getResponse();
if (!response.containsHeader(name))
response.setHeader("org.eclipse.jetty.server.include." + name, value);
}
}; };
} }
}; };
@ -176,6 +149,16 @@ public class IncludableGzipFilter extends GzipFilter
if (!response.containsHeader(name)) if (!response.containsHeader(name))
response.setHeader("org.eclipse.jetty.server.include."+name,value); response.setHeader("org.eclipse.jetty.server.include."+name,value);
} }
@Override
public void addHeader(String name, String value)
{
super.addHeader(name, value);
HttpServletResponse response = (HttpServletResponse)getResponse();
if (!response.containsHeader(name))
setHeader(name,value);
}
@Override @Override
protected PrintWriter newWriter(OutputStream out, String encoding) throws UnsupportedEncodingException protected PrintWriter newWriter(OutputStream out, String encoding) throws UnsupportedEncodingException
{ {