Implement CORS Filter in Java.
When you want to make a Cross Domain Call from angular.js to
a Jboss (or Any server). You can write a simple servlet filter to achieve this.
Add a new Servlet like below
package com.rest.cors;
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig
filterConfig) throws ServletException {
}
@Override
public void
doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse
response = (HttpServletResponse) servletResponse;
response.setHeader("Access-Control-Allow-Origin",
"*");
response.setHeader("Access-Control-Allow-Credentials",
"true");
response.setHeader("Access-Control-Allow-Methods",
"POST, GET, HEAD, OPTIONS");
response.setHeader("Access-Control-Allow-Headers",
"Origin, Accept, X-Requested-With, Content-Type,
Access-Control-Request-Method, Access-Control-Request-Headers");
filterChain.doFilter(servletRequest,
servletResponse);
}
@Override
public void destroy() {
}
}
Add a Filter entry in the web.xml of your war file
<filter>
<filter-name>cors</filter-name>
<filter-class>com.rest.cors.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors</filter-name>
<url-pattern>*
/*</url-pattern>
</filter-mapping>
This will ensure that CORS Filter applied to all, REST APIs and
Servlets’.
Available headers are,
Access-Control-Allow-Origin
– you can set the originating domain info here
Access-Control-Allow-Credentials
– set to true by default
Access-Control-Expose-Headers
Access-Control-Max-Age
Access-Control-Allow-Methods
Access-Control-Allow-Headers
If you intend to use xml/json in content-type, please make sure you
allow OPTION as in the above sample.