I am using jersey 2.18 for developing rest api. (using tomcat container)
I want to allow access to clients from other domain.
So I am trying below code to allow cross domain requests.
Filter
public class MyCorsFilter implements Filter {
public MyCorsFilter() { }
public void init(FilterConfig fConfig) throws ServletException { }
public void destroy() { }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
((HttpServletResponse)response).addHeader("Access-Control-Allow-Origin", "*");
chain.doFilter(request, response);
}
}
web.xml
<filter>
<filter-name>MyCorsFilter</filter-name>
<filter-class>MyCorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyCorsFilter</filter-name>
<url-pattern>/api/*</url-pattern>
</filter-mapping>
Above code works fine until I add HTTP basic authentication.
When I add basic authentication I am getting following error:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
When checked headers using developer tools I found following:
Please note that the error is while executing OPTIONS
method. (I am using GET
method)
Any suggestion on how to add allow CORS with basic HTTP authentication will be appreciated.
You can have Catalina CORS filter configurations in your web.xml as below -