]> granicus.if.org Git - apache/commitdiff
ap_expr: Add req_novary function that allows HTTP header lookups
authorStefan Fritsch <sf@apache.org>
Mon, 29 Oct 2012 20:34:18 +0000 (20:34 +0000)
committerStefan Fritsch <sf@apache.org>
Mon, 29 Oct 2012 20:34:18 +0000 (20:34 +0000)
without adding the name to the Vary header

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1403483 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/manual/expr.xml
server/util_expr_eval.c

diff --git a/CHANGES b/CHANGES
index e31d8d075b5c62b65e4c91cd4294ae9329e5be0e..27b9350effe815fc6299dfe5f8e59a1542274545 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) ap_expr: Add req_novary function that allows HTTP header lookups
+     without adding the name to the Vary header. [Stefan Fritsch]
+
   *) mod_ssl: Change default for SSLCompression to off, as compression
      causes security issues in most setups. (The so called "CRIME" attack).
      [Stefan Fritsch]
index 7b1f6d6626a77ea7fff3b5ddad51e20e6c5d41e2..508d9d4b85252400b46d5fb39eb277c6be885b48 100644 (file)
@@ -142,7 +142,9 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
     <code>req</code> <a href="#functions">function</a>. Using these
     variables may cause the header name to be added to the Vary
     header of the HTTP response, except where otherwise noted for the
-    directive accepting the expression.</p>
+    directive accepting the expression. The <code>req_novary</code>
+    <a href="#functions">function</a> may be used to circumvent this
+    behavior.</p>
 
     <table border="1" style="zebra">
     <columnspec><column width="1"/></columnspec>
@@ -434,6 +436,9 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
     <tr><td><code>req</code>, <code>http</code></td>
         <td>Get HTTP request header; header names may be added to the Vary
             header, see below</td><td></td></tr>
+    <tr><td><code>req_novary</code></td>
+        <td>Same as <code>req</code>, but header names will not be added to the
+            Vary header</td><td></td></tr>
     <tr><td><code>resp</code></td>
         <td>Get HTTP response header</td><td></td></tr>
     <tr><td><code>reqenv</code></td>
@@ -468,7 +473,8 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
     <p>When the functions <code>req</code> or <code>http</code> are used,
     the header name will automatically be added to the Vary header of the
     HTTP response, except where otherwise noted for the directive accepting
-    the expression.</p>
+    the expression. The <code>req_novary</code> function can be used to
+    prevent names from being added to the Vary header.</p>
 
     <p>In addition to string-valued functions, there are also list-valued functions which
     take one string as argument and return a wordlist, i.e. a list of strings. The wordlist
index 699593108c68a883c2b03cb1864eea4ee4871cb7..b350cfc7716d9e823aadff9bf04775f7abf564ba 100644 (file)
@@ -968,6 +968,8 @@ static const char *req_table_func(ap_expr_eval_ctx_t *ctx, const void *data,
         t = ctx->r->notes;
     else if (name[3] == 'e')        /* reqenv */
         t = ctx->r->subprocess_env;
+    else if (name[3] == '_')        /* req_novary */
+        t = ctx->r->headers_in;
     else {                          /* req, http */
         t = ctx->r->headers_in;
         add_vary(ctx, arg);
@@ -1566,6 +1568,7 @@ static const struct expr_provider_single string_func_providers[] = {
     { req_table_func,       "http",           NULL, 0 },
     { req_table_func,       "note",           NULL, 0 },
     { req_table_func,       "reqenv",         NULL, 0 },
+    { req_table_func,       "req_novary",     NULL, 0 },
     { tolower_func,         "tolower",        NULL, 0 },
     { toupper_func,         "toupper",        NULL, 0 },
     { escape_func,          "escape",         NULL, 0 },