[Spring Boot]CORSトラブルシューティング小記録


プロジェクトの進行中によくあるCross-Origin Resource Sharing、CORSエラーが発生しました.
Spring Bootは応答ヘッダに直接追加できる方法を用いて問題を解決したが,なぜかエラーが続き未知数に陥ったが,いくつかの非常に小さな修正で解決した.
まず、私がgooglingで解決した方法を簡単に紹介します.

  • まず、プロジェクト内の任意の場所にフィルタフォルダを作成し、CorsFilterを行います.Javaファイルを作成します.


  • 次に、次の内容で内容を埋め、Filterをインポートするときにjavaxを使用します.servletをインポートする必要があります.
  • @Component
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public class CorsFilter implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res;
    		
            //여기에 내가 허용하고자 하는 클라이언트의 url을 입력해 줍니다. 
            //주의사항 "https://myurl.com/" 처럼 마지막에 '/'를 붙이면 CORS에러가 그대로 발생하게 됩니다.
            response.setHeader("Access-Control-Allow-Origin", "https://myurl.com"); 
            //response.setHeader("Access-Control-Allow-Origin", "*");  //이렇게 해서 모든 요청에 대해서 허용할 수도 있습니다.
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Methods","*");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers",
                    "Origin, X-Requested-With, Content-Type, Accept, Authorization");
    
            if("OPTIONS".equalsIgnoreCase(request.getMethod())) {
                response.setStatus(HttpServletResponse.SC_OK);
            }else {
                chain.doFilter(req, res);
            }
        }
    
        @Override
        public void destroy() {
    
        }
    }
    私も最初は簡単な方法@CrossOriginを使いましたが、原因は分かりませんが、CORSエラーが発生し続け、確実に実行可能な方法:上の方法を使いました.urlの最後に「/」を付けないように注意してください!さっき「/」でうろうろしていて、「/」が原因だと気づいたので書いてみました.ここまでです.