CORS (Cross-origin resource sharing) 서비스가 다른 크로스도메인 해결방법

Ajax에서 특정 서비스 호출 시 도메인이 서로 다를경우, 정상적인 서비스를 호출하기 위해서는 Spring MVC의 필터링을 이용하여 처리할 수 있다.

1. OncePerRequestFilter 를 상속 필터 클레스 구현

package 패키지명;

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;

public class CorsFilter extends OncePerRequestFilter {

	@Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
        response.addHeader("Access-Control-Allow-Origin", "*");
        if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())); {
            // CORS "pre-flight" request
            response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            response.addHeader("Access-Control-Allow-Headers", "Authorization");
            response.addHeader("Access-Control-Max-Age", "1728000");
        }
        filterChain.doFilter(request, response);
    }
}

2. web.xml에 필터로 설정

  
      corsFilter
      패키지.CorsFilter 
  
  
      corsFilter
      /data/* 
  

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다