-
[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