From 1923e54e2ef25449b769b0d46ddaf76c1b4cb7a9 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 1 Apr 2019 13:39:53 +0200
Subject: [PATCH] headers to disable query caching added

---
 CHANGELOG                                                  | 2 ++
 .../mapviewer/web/bean/utils/ApiAccessControlFilter.java   | 7 ++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG b/CHANGELOG
index fe781357f5..a6960a4858 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -8,6 +8,8 @@ minerva (12.2.1) stable; urgency=medium
     privileges (#766)
   * Bug fix: invalid pubmed identifier could break clicking on element 
     containing it (#764, #765, #769)
+  * Bug fix: cache for API queries is explicitly disabled - some queries could 
+    be mistakenly cached and the system behaviour might get unstable (#771)
 
  -- Piotr Gawron <piotr.gawron@uni.lu>  Mon, 1 Apr 2019 17:00:00 +0200
 
diff --git a/web/src/main/java/lcsb/mapviewer/web/bean/utils/ApiAccessControlFilter.java b/web/src/main/java/lcsb/mapviewer/web/bean/utils/ApiAccessControlFilter.java
index 1d490fc98a..c09fdbea38 100644
--- a/web/src/main/java/lcsb/mapviewer/web/bean/utils/ApiAccessControlFilter.java
+++ b/web/src/main/java/lcsb/mapviewer/web/bean/utils/ApiAccessControlFilter.java
@@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.log4j.Logger;
 
 /**
- * This filter enables x-frames from another domain if necessary.
+ * This filter disables caching for API queries.
  * 
  * @author Piotr Gawron
  *
@@ -33,7 +33,12 @@ public class ApiAccessControlFilter implements Filter {
   public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
       throws IOException, ServletException {
     HttpServletResponse response = (HttpServletResponse) res;
+    //caching on Safari
     response.addHeader("Vary", "*");
+    // generic cache prevent mechanism
+    response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
+    response.addHeader("Pragma", "no-cache");
+    response.addHeader("Expires", "0");
     chain.doFilter(req, response);
   }
 
-- 
GitLab