As per Konstantin's comments, ensure a single Vary header is used and take account of * if present
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@918093
13f79535-47bb-0310-9956-
ffa450edef68
outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]);
headers.setValue("Content-Encoding").setString("gzip");
// Make Proxies happy via Vary (from mod_deflate)
- headers.addValue("Vary").setString("Accept-Encoding");
+ MessageBytes vary = headers.getValue("Vary");
+ if (vary == null) {
+ // Add a new Vary header
+ headers.setValue("Vary").setString("Accept-Encoding");
+ } else if (vary.equals("*")) {
+ // No action required
+ } else {
+ // Merge into current header
+ headers.setValue("Vary").setString(
+ vary.getString() + ",Accept-Encoding");
+ }
}
// Add date header
outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]);
headers.setValue("Content-Encoding").setString("gzip");
// Make Proxies happy via Vary (from mod_deflate)
- headers.addValue("Vary").setString("Accept-Encoding");
+ MessageBytes vary = headers.getValue("Vary");
+ if (vary == null) {
+ // Add a new Vary header
+ headers.setValue("Vary").setString("Accept-Encoding");
+ } else if (vary.equals("*")) {
+ // No action required
+ } else {
+ // Merge into current header
+ headers.setValue("Vary").setString(
+ vary.getString() + ",Accept-Encoding");
+ }
}
// Add date header
outputBuffer.addActiveFilter(outputFilters[Constants.GZIP_FILTER]);
headers.setValue("Content-Encoding").setString("gzip");
// Make Proxies happy via Vary (from mod_deflate)
- headers.addValue("Vary").setString("Accept-Encoding");
+ MessageBytes vary = headers.getValue("Vary");
+ if (vary == null) {
+ // Add a new Vary header
+ headers.setValue("Vary").setString("Accept-Encoding");
+ } else if (vary.equals("*")) {
+ // No action required
+ } else {
+ // Merge into current header
+ headers.setValue("Vary").setString(
+ vary.getString() + ",Accept-Encoding");
+ }
}
// Add date header