package org.aksw.sparqlify.admin.web.main; 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.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * Source: https://github.com/Atmosphere/atmosphere/wiki/Enabling-CORS * */ public class CorsFilter implements Filter { private static final Logger logger = LoggerFactory.getLogger(CorsFilter.class); @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; if(req.getHeader("Origin") != null){ res.addHeader("Access-Control-Allow-Origin", "*"); res.addHeader("Access-Control-Expose-Headers", "X-Cache-Date, X-Atmosphere-tracking-id"); } if("OPTIONS".equals(req.getMethod())){ res.addHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST"); res.addHeader("Access-Control-Allow-Headers", "Origin, Content-Type, X-Atmosphere-Framework, X-Cache-Date, X-Atmosphere-tracking-id, X-Atmosphere-Transport"); res.addHeader("Access-Control-Max-Age", "-1"); } chain.doFilter(req, res); } @Override public void destroy() { } @Override public void init(FilterConfig arg0) throws ServletException { logger.info("CORS filter initialized"); } }