In PR 58231 is was brought up that httpd adds the
Vary: Host header whenever a condition is set to true
in mod_rewrite or in an <If> block.
The https://tools.ietf.org/html/rfc7231#section-7.1.4
section seems to disallow this use case:
"The "Vary" header field in a response describes "
"what parts of a request message, "
"aside from the method, Host header field, [...]"
I had a chat with the folks in #traffic-server and
they don't see much point in having a Vary: Host header,
plus it was reported that Varnish doesn't like it very
much (namely it does not cache the response when
it sees the header, links of the report in the PR).
I don't see much value in this behavior of httpd so
I am inclined to remove this response header value,
but I'd be glad to get a more experienced opinion.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@
1808746 13f79535-47bb-0310-9956-
ffa450edef68
-*- coding: utf-8 -*-
Changes with Apache 2.5.0
+ *) mod_rewrite, core: Avoid the 'Vary: Host' response header when HTTP_HOST is
+ used in a condition that evaluates to true. PR 58231 [Luca Toscano]
+
*) mod_md: v0.9.6: a "MDRequireHttps permament" configured domain automatically sends out
HSTS (rfc 6797) headers in https: responses. [Stefan Eissing]
case 'S':
if (!strcmp(var, "HTTP_HOST")) {
- result = lookup_header("Host", ctx);
+ /* Skip the 'Vary: Host' header combination
+ * as indicated in rfc7231 section-7.1.4
+ */
+ result = apr_table_get(ctx->r->headers_in, "Host");
}
break;
return "";
name = req_header_header_names[index];
- add_vary(ctx, name);
+ /* Skip the 'Vary: Host' header combination
+ * as indicated in rfc7231 section-7.1.4
+ */
+ if (strcmp(name, "Host")){
+ add_vary(ctx, name);
+ }
return apr_table_get(ctx->r->headers_in, name);
}