ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SpringBoot] Proxy방식으로 CORS 해결하기
    JAVA 2024. 1. 11. 20:26
    반응형

     

    CORS (Cross-Origin Resource Sharing)은 웹 페이지에서 리소스에 대한 접근을 제어하는 보안기술이며

    Same-Origin Policy로 인해 발생하는 문제를 해결하기 위한 것이다.

     

    여기서 Same-Origin Policy는 스크립트가 한 출처에서 로드된 문서와 동일한 출처를 가져야만 상호작용 할 수 있는 규칙이다.

     

    여러 해결 방법 중, Proxy방식으로 해결하는 방법을 기록으로 남긴다.

     

    1. CORS 구성클래스 생성

    /* CORS 구성 클래스 */
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("https://api.finance.naver.com") // 허용할 주소. 모든 주소 허용시 "*"
                    .allowedMethods("GET", "POST")
                    .maxAge(3000);
        }
    
    }

     

    2.프록시로 쓸 컨트롤러 생성

    - 여기서는 [localhost:port/api/data?필요 파라미터] 로 접근한다.

    @Controller
    @RequestMapping("/api")
    public class ProxyController {
        private final RestTemplate restTemplate;
    
        public ProxyController(RestTemplate restTemplate) {
            this.restTemplate = restTemplate;
        }
    
        @GetMapping("/data")
        @ResponseBody
        public String getData(@RequestParam String cd, @RequestParam String stdt, @RequestParam String eddt) {
            String apiUrl = "https://api.finance.naver.com/siseJson.naver?symbol=" + cd +
                    "&requestType=1&startTime=" + stdt +
                    "&endTime=" + eddt +
                    "&timeframe=day";
            return restTemplate.getForObject(apiUrl, String.class);
        }
    
    }

     

    3. 컨트롤러에서 사용하는 RestTemplate를 통해 외부 API로 요청을 보내기 위한 Bean 설정.

    @Configuration
    public class AppConfig {
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }

     

    4.동작확인. CORS 정책에 막히지 않고 요청한 데이터를 정상적으로 받아온 모습

    반응형

    'JAVA' 카테고리의 다른 글

    [JAVA] List 컬렉션 - ArrayList  (0) 2022.05.20
    [JAVA] 컬렉션프레임워크  (0) 2022.05.19
    [JAVA] Generic (제네릭) - WildCard(와일드카드)  (0) 2022.05.19
    [JAVA] 제네릭 (Generic)  (0) 2022.05.16

    댓글

Designed by Tistory.