]> source.dussan.org Git - vaadin-framework.git/commitdiff
Set no-store headers on UIDL messages
authorLeif Åstrand <legioth@gmail.com>
Fri, 10 Nov 2017 15:11:03 +0000 (17:11 +0200)
committerPéter Török <31210544+torok-peter@users.noreply.github.com>
Fri, 10 Nov 2017 15:11:03 +0000 (17:11 +0200)
UIDL might contain sensitive information that we should prevent from
being stored anywhere.

server/src/main/java/com/vaadin/server/communication/UIInitHandler.java

index c2992fc29ce26a23181a6988bc098a532f09bd2e..12a04c1509630e2082deb0e6917a3773f2de0804 100644 (file)
@@ -109,9 +109,15 @@ public abstract class UIInitHandler extends SynchronizedRequestHandler {
         // The response was produced without errors so write it to the client
         response.setContentType(JsonConstants.JSON_CONTENT_TYPE);
 
-        // Ensure that the browser does not cache UIDL responses.
-        // iOS 6 Safari requires this (#9732)
-        response.setHeader("Cache-Control", "no-cache");
+        // Response might contain sensitive information, so prevent caching
+        // no-store to disallow storing even if cache would be revalidated
+        // must-revalidate to not use stored value even if someone asks for it
+        response.setHeader("Cache-Control",
+                "no-cache, no-store, must-revalidate");
+
+        // Also set legacy values in case of old proxies in between
+        response.setHeader("Pragma", "no-cache");
+        response.setHeader("Expires", "0");
 
         byte[] b = json.getBytes(UTF_8);
         response.setContentLength(b.length);