springboot 크로스 도 메 인 문제 해결

1. 전역 전역
package com.ranxx.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 *     
 *
 * @author mousejoo
 */
@Configuration
public class CorsConfig {
	private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1         
        corsConfiguration.addAllowedHeader("*"); // 2      
        corsConfiguration.addAllowedMethod("*"); // 3       (post、get )
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }
	

}


혹시
@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.  CORS    
        CorsConfiguration config = new CorsConfiguration();
          //       
          config.addAllowedOrigin("*");
          //    Cookie  
          config.setAllowCredentials(true);
          //       (    )
          config.addAllowedMethod("*");
          //       (    )
          config.addAllowedHeader("*");
          //        (                  )
          config.addExposedHeader("content-type");

        //2.      
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        //3.    CorsFilter.
        return new CorsFilter(configSource);
    }
}


2. 주석 사용 (부분 크로스)
@RequestMapping("/preUser")
@CrossOrigin("http://localhost:8080")
public Map preUser(){
    Map map = new HashMap();
    map.put("preUser","success");
    return map;
}

또는 컨트롤 러 (@ Controller) 에 주 해 를 사용 합 니 다 @ CrossOrigin:
@RestController
@CrossOrigin(origins = "http://localhost:8080", maxAge = 3600)
public class CorsController {
    
    @RequestMapping("/preUser")
    public Map preUser(){
        Map map = new HashMap();
        map.put("preUser","success");
        return map;
    }
}

3. 응답 헤드 수 동 설정 (부분 크로스)
@RequestMapping("/hello")
@ResponseBody
public String index(HttpServletResponse response){
    response.addHeader("Access-Control-Allow-Origin", "http://localhost:8080");
    return "Hello World";
}

Access - Control - Allow - Origin 은 어떤 원시 도 메 인 을 크로스 도 메 인 으로 접근 할 수 있 는 지 표시 합 니 다.
Access - Control - Allow - Credentials 는 클 라 이언 트 가 사용자 증 거 를 가 져 올 수 있 는 지 여 부 를 표시 합 니 다.
Access - Control - Allow - methods 는 어떤 크로스 도 메 인 요청 을 허용 하 는 제출 방식 을 표시 합 니 다.(예: GET/POST)
Access - Control - Expose - Headers 는 클 라 이언 트 에 게 어떤 머리 정 보 를 노출 할 수 있 는 지 를 표시 합 니 다.
Access - Control - Max - age 는 예비 검사 요청 [Preflight Request] 의 최대 캐 시 시간 을 표시 합 니 다.

좋은 웹페이지 즐겨찾기