diff options
author | lambda <pleromagit@rogerbraun.net> | 2019-01-21 16:19:15 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2019-01-21 16:19:15 +0000 |
commit | 3f9c7783205f8448678162e4fe4c5a4c1b801d4f (patch) | |
tree | 34859f1f03a513ec8e84ff47b9a87ddd0ae65632 | |
parent | 8cd853ce0c2d67614dc2e0b07b4cf855a2a381d2 (diff) | |
parent | 99763999c19bfb2a5d8a10af98ff3c54d2c929ce (diff) | |
download | pleroma-3f9c7783205f8448678162e4fe4c5a4c1b801d4f.tar.gz pleroma-3f9c7783205f8448678162e4fe4c5a4c1b801d4f.zip |
Merge branch 'proxy-no-default-plug-cache' into 'develop'
Always override plug's default cache-control in reverse proxy
See merge request pleroma/pleroma!692
-rw-r--r-- | lib/pleroma/reverse_proxy.ex | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex index a3846c3bb..a25b5ea4e 100644 --- a/lib/pleroma/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy.ex @@ -275,11 +275,24 @@ defmodule Pleroma.ReverseProxy do defp build_resp_cache_headers(headers, _opts) do has_cache? = Enum.any?(headers, fn {k, _} -> k in @resp_cache_headers end) - - if has_cache? do - headers - else - List.keystore(headers, "cache-control", 0, {"cache-control", @default_cache_control_header}) + has_cache_control? = List.keymember?(headers, "cache-control", 0) + + cond do + has_cache? && has_cache_control? -> + headers + + has_cache? -> + # There's caching header present but no cache-control -- we need to explicitely override it to public + # as Plug defaults to "max-age=0, private, must-revalidate" + List.keystore(headers, "cache-control", 0, {"cache-control", "public"}) + + true -> + List.keystore( + headers, + "cache-control", + 0, + {"cache-control", @default_cache_control_header} + ) end end |