Tomcat CORS filter

Quiero habilitar el filtro tomcat CORS, lo agregué a web.xml:

 CorsFilter org.apache.catalina.filters.CorsFilter   CorsFilter /*  

Pero no funciona. Intenté con un filtro personalizado:

  SimpleCORSFilter com.common.SimpleCORSFilter   SimpleCORSFilter /*  

Con esta clase:

 public class SimpleCORSFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); chain.doFilter(req, res); } } 

Y esto funciona, ¿puedes decirme por qué? No sé si es importante, pero me encargo de Spring Framework.

El filtro org.apache.catalina.filters.CorsFilter busca primero un encabezado en la solicitud: Origin . Si este encabezado no existe, el filtro no agrega ningún encabezado en la respuesta. Tal vez por esa razón no funciona.

Además, en una solicitud POST , busque el encabezado Content-Type . Algo similar sucede con otros métodos. Puede que desee ver el código de este filtro. De otra manera, hay un diagtwig de flujo :

Diagrama de flujo CORS

Tengo un problema similar y encontré algo que me funcionó en tomcat doc tomcat-doc-CORSFilter . Utilizo filter e init-param como a continuación:

  CorsFilter org.apache.catalina.filters.CorsFilter  cors.allowed.origins *   cors.allowed.methods GET,POST,HEAD,OPTIONS,PUT   cors.allowed.headers Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers   cors.exposed.headers Access-Control-Allow-Origin,Access-Control-Allow-Credentials   cors.support.credentials true   cors.preflight.maxage 10    CorsFilter /*  

¡Espero eso ayude!

En mi caso con Ueditor, X-Requested-With debería ser X_Requested_With .