diff --git a/guacamole/src/main/java/org/apache/guacamole/CacheRevalidationFilter.java b/guacamole/src/main/java/org/apache/guacamole/CacheRevalidationFilter.java new file mode 100644 index 000000000..38dd40303 --- /dev/null +++ b/guacamole/src/main/java/org/apache/guacamole/CacheRevalidationFilter.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.guacamole; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletResponse; + +/** + * Filter that sets the HTTP response headers necessary to request that the + * browser always revalidate its cached copy of the response before using that + * cached copy. + */ +public class CacheRevalidationFilter implements Filter { + + @Override + public void init(FilterConfig config) throws ServletException { + // No configuration + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + HttpServletResponse httpResponse = (HttpServletResponse) response; + httpResponse.addHeader("Cache-Control", "no-cache"); + httpResponse.addHeader("Pragma", "no-cache"); + + chain.doFilter(request, response); + + } + + @Override + public void destroy() { + // Nothing to clean up + } + + +} diff --git a/guacamole/src/main/webapp/WEB-INF/web.xml b/guacamole/src/main/webapp/WEB-INF/web.xml index 52a52a624..ba1f6115e 100644 --- a/guacamole/src/main/webapp/WEB-INF/web.xml +++ b/guacamole/src/main/webapp/WEB-INF/web.xml @@ -28,6 +28,16 @@ index.html + + + cacheRevalidationFilter + org.apache.guacamole.CacheRevalidationFilter + + + cacheRevalidationFilter + /index.html + + guiceFilter