XMLHttpRequest cannot load http://yourdomain.com/path/resoruce. Response for preflight has invalid HTTP status code 401
If you are using token-based authentication for your spring java API, then you will get this error if you don't handle preflight requests. To know about preflight requests you can visit this link. In preflight requests browser will send a pre-request before the original request and check if it is safe to send information to that API. The browser will first send options request. To allow preflight request you should enable your API to accept OPTIONS request. In Java, you can do this by adding following code in spring filter.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse hsResponse = (HttpServletResponse) response; HttpServletRequest request = (HttpServletRequest) request; hsResponse.setHeader("Access-Control-Allow-Origin", "*"); //add * for global origin or http://localhost:8200 hsResponse.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); hsResponse.setHeader("Access-Control-Max-Age", "5000"); hsResponse.setHeader("Access-Control-Allow-Credentials", "true"); hsResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with, authorization, Content-Type, Authorization, credential, X-XSRF-TOKEN"); if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { hsResponse.setStatus(HttpServletResponse.SC_OK); } else { chain.doFilter(request, response); } }
This will fix preflight errors in your spring api.