Spring boot 개발 시,
도메인이 다른 클라이언트에서 서버 Rest API 를 호출하면 CORS 이슈가 발생하는 경우가 있다.
Spring boot에서는 디폴트 메소드로 GET
, POST
, HEAD
메소드에 대해서 CORS를 열어주지만,
DELETE
, PUT
등에 대해서는 추가로 설정해주어야 한다.
CorsConfiguration.java
private static final List<String> DEFAULT_PERMIT_METHODS = Collections.unmodifiableList(
Arrays.asList(HttpMethod.GET.name(), HttpMethod.HEAD.name(), HttpMethod.POST.name()));
해결)
yml
, spring-cloud-config
에 allowed-methods
추가
xxx:
common:
yyy:
cors:
allow-credentials: true
allowed-methods:
- GET
- POST
- PUT
- DELETE
allowed-origins:
- "https://XXX.XXX.com"
allowed-methods
는 덮어쳐지므로 사용하는 모든 메소드 추가!
또는
호출되는 컨트롤러 메소드에 @CrossOrigin
어노테이션 추가!
@PostMapping(“/path”)
@CrossOrigin
public Response test(Request request) {
// biz.
}
참고
[Spring] Postman Rest API CORS 테스트
https://velog.io/@kmdngmn/Spring-Postman-Rest-API-CORS-%ED%85%8C%EC%8A%A4%ED%8A%B8