Search

Cors 오류

태그
IntelliJ
생성 일시
2023/07/15 10:36
해결여부

Description

AWS 인스턴스에다가 Vue언어로 구성된 nginx 그리고 Redis, Spring, MySQL등을 올려놓았다.
sudo docker ps 결과 모든 이미지 들이 제대로 동작하는걸 볼 수 있다.
인스턴스의 퍼블릭 IP 주소를 통한 접근도 제대로 되고있다.
하지만 회원가입을 하기 위해서 이메일이 제대로된 이메일인지 확인하는 기능을 눌렀을때 CORS 오류가 발생했다.
하지만 Postman은 제대로 동작을 하고 있다.
Nginx와 Spring에서 모두 CORS 구성을 할 경우 두 가지에서 중복이 일어나 오류가 발생할 수 있다고 한다. 우선 Spring에서 CORS 구성을 하였으니 Spring을 조져보자

Try

package com.jgj.byl_process.domain.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 WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://127.0.0.1:8080") .allowedOrigins("http://localhost:8080") .allowedOrigins("http://15.165.2.78") .allowedMethods("GET", "POST", "PUT", "DELETE"); } }
JSON
복사
현재 Spring에서 사용하는 Cors 구성이다.
올바른 Cors 구성은 allowedOrigins를 한줄로 대체하는게 올바른 구성이라고 한다.
변경 후 WebConfig 파일
package com.jgj.byl_process.domain.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 WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://127.0.0.1:8080", "http://localhost:8080", "http://15.165.2.78") .allowedMethods("GET", "POST", "PUT", "DELETE"); } }
JSON
복사
여전히 문제가 발생한다.
일시적으로 모든 요청을 확인하도록 바꿔보겠다.
package com.jgj.byl_process.domain.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 WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*"); } }
JSON
복사

Solution

아무리 인텔리제이에서 빌드를 하고 빌드를 하고 SCP로 보내봐도 Docker에서 문제가 발생하고 있었다.
sudo docker-compose up 하고 나가도 다시 올린 .jar 파일로 빌드를 하지 않기 때문에 Cors 구성이 되지 않은채 돌아가고 있기 때문에 이런 현상이 발생하고 있었다.
Spring에서 제대로 Cors 구성을 넣어주고 Build를 한 뒤에 SCP로 넘기고
인스턴스에서 sudo docker-compose up —build 를 해줘야지 다시 빌드를 하게 된다.