내가 만든 API는 우리 프로젝트를 위한 API이다.
그런데 이 API 를 우리 프로젝트 프론트에서 요청을 보내면 cors error 를 접하게 된다.
Postman 에서는 분명 잘 동작했는데 왜 그런지 알아보자.
만약 내가 만든 API가 어디서든 바로 요청에 대해 응답값을 준다고 하면 다른 사이트에서도
얼마든지 이용이 가능하다.
이것을 막기 위해 프로토콜 , 도메인 , 포트번호 등을 검증하여 브라우저는 HTTP 요청을 제한한다.
프로토콜 , 도메인 , 포트번호 중 하나라도 다른경우를 cross-origin 이라고 한다.
그렇다면 우리 프론트 에서는 사용할수 있게 별도의 설정을 해주어야 한다는 것이다.
package com.hello.foreverpet.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE")
.allowedHeaders("headers")
.maxAge(3000);
}
}
현재는 개발단계이며 프론트 배포가 이루어지지 않았기 때문에 전역으로 모든 URL 과 요청에 응답하게 등록을 해두었다.
모든 개발이 완료될때쯤 다시 이부분을 우리만의 API로 만들기 위한 수정을 할 예정이다.
CORS 에러로 인해 프론트에서 API 응답값을 받지 못했지만
이것은 원하는 곳에만 응답을 해주기 위한 에러가 아니라 해결책 이였다.