Cross-Origin Resource Sharing with Spring Security

后端 未结 8 1598
暖寄归人
暖寄归人 2020-12-01 04:39

I\'m trying to make CORS play nicely with Spring Security but it\'s not complying. I made the changes described in this article and changing this line in applicationCo

8条回答
  •  广开言路
    2020-12-01 04:55

    well This is my code working very well and perfect for me: I spent two days working on it and understanding spring security so I hope you accept it as the answer, lol

     public class CorsFilter extends OncePerRequestFilter  {
        static final String ORIGIN = "Origin";
    
        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
                throws ServletException, IOException {
            System.out.println(request.getHeader(ORIGIN));
            System.out.println(request.getMethod());
            if (request.getHeader(ORIGIN).equals("null")) {
                String origin = request.getHeader(ORIGIN);
                response.setHeader("Access-Control-Allow-Origin", "*");//* or origin as u prefer
                response.setHeader("Access-Control-Allow-Credentials", "true");
               response.setHeader("Access-Control-Allow-Headers",
                        request.getHeader("Access-Control-Request-Headers"));
            }
            if (request.getMethod().equals("OPTIONS")) {
                try {
                    response.getWriter().print("OK");
                    response.getWriter().flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else{
            filterChain.doFilter(request, response);
            }
        }
    }
    

    well then you need to also set your filter to be invoked:

    
         ...
         //your other configs
         // this goes to your filter
    
    

    Well and you need a bean for the custom filter you created:

    
    

提交回复
热议问题