diff --git a/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/HttpResponseHeadersFilter.java b/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/HttpResponseHeadersFilter.java
new file mode 100644
index 0000000..68e4ac2
--- /dev/null
+++ b/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/HttpResponseHeadersFilter.java
@@ -0,0 +1,29 @@
+package org.onosproject.ui.impl.gui2;
+ 
+import java.io.IOException;
+ 
+import javax.servlet.Filter;  
+import javax.servlet.FilterConfig;  
+import javax.servlet.FilterChain; 
+import javax.servlet.ServletException; 
+import javax.servlet.ServletRequest; 
+import javax.servlet.ServletResponse; 
+import javax.servlet.http.HttpServletResponse;
+ 
+ 
+public class HttpResponseHeadersFilter implements Filter {
+	
+    @Override
+    public void init(FilterConfig filterconfig){}
+
+    @Override
+	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+	    HttpServletResponse resp = (HttpServletResponse) response;
+        resp.setHeader("Content-Security-Policy", "frame-ancestors 'none'");
+		chain.doFilter(request, resp);
+	}
+
+    @Override
+    public void destroy(){}
+
+}
\ No newline at end of file
diff --git a/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/MainIndexResource.java b/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/MainIndexResource.java
index 3441cbf..64c4f28 100644
--- a/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/MainIndexResource.java
+++ b/web/gui2/src/main/java/org/onosproject/ui/impl/gui2/MainIndexResource.java
@@ -52,9 +52,6 @@
     private static final String INDEX = "index.html";
     private static final String NOT_READY = "not-ready.html";
 
-    private static final String CONTENT_SECURITY_POLICY = "Content-Security-Policy";
-    private static final String FRAME_ANCESTORS_NONE = "frame-ancestors 'none'";
-
     private static final String INJECT_USER_START = "<!-- {INJECTED-USER-START} -->";
     private static final String INJECT_USER_END = "<!-- {INJECTED-USER-END} -->";
 
@@ -117,9 +114,7 @@
                         new ByteArrayInputStream(SCRIPT_END),
                         stream(index, p0e, p3s)));
 
-        return Response.ok(new SequenceInputStream(streams))
-                       .header(CONTENT_SECURITY_POLICY, FRAME_ANCESTORS_NONE)
-                       .build();
+        return Response.ok(new SequenceInputStream(streams)).build();
     }
 
     private InputStream userConsoleLog(String userName) {
diff --git a/web/gui2/src/main/webapp/WEB-INF/web.xml b/web/gui2/src/main/webapp/WEB-INF/web.xml
index 2543df8..fdcd422 100644
--- a/web/gui2/src/main/webapp/WEB-INF/web.xml
+++ b/web/gui2/src/main/webapp/WEB-INF/web.xml
@@ -21,6 +21,16 @@
          id="ONOS" version="2.5">
     <display-name>ONOS GUI 2</display-name>
 
+    <filter>
+        <filter-name>Http Response Headers Filter</filter-name>
+        <filter-class>org.onosproject.ui.impl.gui2.HttpResponseHeadersFilter</filter-class>
+    </filter>
+    
+    <filter-mapping> 
+        <filter-name>Http Response Headers Filter</filter-name> 
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
     <welcome-file-list>
         <welcome-file>index.html</welcome-file>
     </welcome-file-list>
