]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
Revert "MINOR: cache: allow caching of OPTIONS request"
authorWilly Tarreau <w@1wt.eu>
Tue, 1 Oct 2019 15:59:17 +0000 (17:59 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 1 Oct 2019 15:59:17 +0000 (17:59 +0200)
This reverts commit 1263540fe824c74bc3c668fec3476b880d65b27c.

As discussed in issues #214 and #251, this is not the correct way to
cache CORS responses, since it relies on hacking the cache to cache
the OPTIONS method which is explicitly non-cacheable and for which
we cannot rely on any standard caching semantics (cache headers etc
are not expected there). Let's roll this back for now and keep that
for a more reliable and flexible CORS-specific solution later.

src/cache.c

index 414b931678ceb6fcc0e786aaa21582fcfbe89399..06924cc6f84d5fbc3df1c443c03cc0c2b15ac3e3 100644 (file)
@@ -563,8 +563,8 @@ enum act_return http_action_store_cache(struct act_rule *rule, struct proxy *px,
        if (!(txn->req.flags & HTTP_MSGF_VER_11))
                goto out;
 
-       /* cache only GET or OPTIONS method */
-       if (txn->meth != HTTP_METH_GET && txn->meth != HTTP_METH_OPTIONS)
+       /* cache only GET method */
+       if (txn->meth != HTTP_METH_GET)
                goto out;
 
        /* cache key was not computed */
@@ -1069,9 +1069,6 @@ int sha1_hosturi(struct stream *s)
        ctx.blk = NULL;
 
        switch (txn->meth) {
-       case HTTP_METH_OPTIONS:
-               chunk_memcat(trash, "OPTIONS", 7);
-               break;
        case HTTP_METH_HEAD:
        case HTTP_METH_GET:
                chunk_memcat(trash, "GET", 3);
@@ -1107,10 +1104,10 @@ enum act_return http_action_req_cache_use(struct act_rule *rule, struct proxy *p
        struct cache_flt_conf *cconf = rule->arg.act.p[0];
        struct cache *cache = cconf->c.cache;
 
-       /* Ignore cache for HTTP/1.0 requests and for requests other than GET,
-        * HEAD and OPTIONS */
+       /* Ignore cache for HTTP/1.0 requests and for requests other than GET
+        * and HEAD */
        if (!(txn->req.flags & HTTP_MSGF_VER_11) ||
-           (txn->meth != HTTP_METH_GET && txn->meth != HTTP_METH_HEAD && txn->meth != HTTP_METH_OPTIONS))
+           (txn->meth != HTTP_METH_GET && txn->meth != HTTP_METH_HEAD))
                txn->flags |= TX_CACHE_IGNORE;
 
        http_check_request_for_cacheability(s, &s->req);