1 /* 2 * Licensed to the University Corporation for Advanced Internet Development, 3 * Inc. (UCAID) under one or more contributor license agreements. See the 4 * NOTICE file distributed with this work for additional information regarding 5 * copyright ownership. The UCAID licenses this file to You under the Apache 6 * License, Version 2.0 (the "License"); you may not use this file except in 7 * compliance with the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package edu.internet2.middleware.shibboleth.idp.util; 19 20 import java.io.IOException; 21 22 import javax.servlet.Filter; 23 import javax.servlet.FilterChain; 24 import javax.servlet.FilterConfig; 25 import javax.servlet.ServletException; 26 import javax.servlet.ServletRequest; 27 import javax.servlet.ServletResponse; 28 import javax.servlet.http.HttpServletResponse; 29 30 /** 31 * An HTTP filter that adds the following headers/values to the {@link HttpServletResponse} and thus, hopefully, 32 * prevents caching of the response on all browser. 33 * <ul> 34 * <li>Expires: 0</li> 35 * <li>Cache-Control: no-cache, no-store, must-revalidate, max-age=0 36 * <li> 37 * <li>Pragma: no-cache</li> 38 * </ul> 39 */ 40 public class NoCacheFilter implements Filter { 41 42 /** {@inheritDoc} */ 43 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 44 ServletException { 45 HttpServletResponse httpResponse = (HttpServletResponse) response; 46 47 httpResponse.setHeader("Expires", "0"); 48 httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=0"); 49 httpResponse.setHeader("Pragma", "no-cache"); 50 chain.doFilter(request, response); 51 } 52 53 /** {@inheritDoc} */ 54 public void init(FilterConfig filterConfig) throws ServletException { 55 // nothing to do here 56 } 57 58 /** {@inheritDoc} */ 59 public void destroy() { 60 // nothing to do here 61 } 62 }