Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 회고
- 서버 꺼짐
- 게시판
- 코딩테스트
- 프로젝트
- 프로그래머스
- 알고리즘
- springboot
- 우테코
- 네팔
- Java
- OOM
- 커밋 메시지
- mysql
- Spring
- spring boot
- 로그인
- docker
- 해외봉사
- 세션로그인
- Dockerfile
- crud
- Lv.2
- fastapi
- cors
- llm
- LV2
- 쿠키로그인
- openAI
- 부트스트랩
Archives
- Today
- Total
s00jin 님의 블로그
[CORS 오류] 프론트에서 api 호출 시 CORS 오류 발생 본문
2025.09.15 - [프로젝트/트러블슈팅] - [Docker/EC2] 배포한 서버가 수정된 코드로 반영되지 않던 이유
[Docker/EC2] 배포한 서버가 수정된 코드로 반영되지 않던 이유
돈굴돈굴 돈굴이 프로젝트 진행 중 발생한 트러블 슈팅이다. 프로젝트를 진행하면서 발생한 문제는 크게 두 가지이다.1. 코드 수정 후 다시 배포를 했지만 배포한 서버에 반영이 안되던 문제2.
s00jin.tistory.com
위 프로젝트를 진행하며 생긴 또 다른 문제인 CORS 오류에 대한 기록이다.
문제 상황
프론트에서 백엔드 API 호출 시 아래 오류가 발생했다.
Access to fetch at '<https://4264-134-75-39-23.ngrok-free.app/api/home/detail?userId=1&date=2025-06-11>'
from origin '' has been blocked by CORS policy: Response to preflight
request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested
resource.Understand this error
항상 백엔드 서버는 EC2에 배포했었다.
근데 이번에는 수업 도중 프론트 파트원이 급하게 api를 쓸 수 있냐고 요청하여,
로컬 서버를 ngrok을 사용해서 외부에 노출하였다.
로컬에서 배포한 api를 프론트에서 테스트 하기 위해 api 요청을 보냈는데 CORS 오류가 발생했다.
오류 해결을 위해 CORS 설정을 추가하였지만 문제가 지속되어, ngrok 무료 버전의 문제라고 생각했다.
하지만, EC2로 배포해도 동일한 오류가 발생했다.
여기서 문제가 EC2로 배포하면서, ngrok의 문제인줄 알고, 앞서 추가해둔 CORS 설정 코드를 제거했다는 거다..ㅎㅎ
다시 CORS 허용 설정을 추가해주니, 문제가 해결됐다.
해결 방법 | CORS 허용 설정
package com.example.accountbook;
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("/**") // 모든 경로에 대해 CORS를 적용
.allowedOrigins("<http://localhost:3000>") // 허용할 프론트엔드 URL
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 허용할 HTTP 메서드.
.allowedHeaders("*")
.allowCredentials(true)
.maxAge(3600);
}
}
이후 프론트 요청이 정상적으로 동작했다.
+ 현재는 프론트엔드가 로컬에서 테스트 함으로 프론트 로컬 url을 허용해줬다.
만약 배포를 한다면 배포된 url만 허용하는게 안전하다.
'프로젝트 > 트러블슈팅' 카테고리의 다른 글
| [동시성 문제] 더블 클릭과 네트워크 문제로 인한 동시성 문제 해결 (0) | 2025.09.18 |
|---|---|
| [Docker/EC2] 배포한 서버가 수정된 코드로 반영되지 않던 이유 (0) | 2025.09.15 |
| [EC2/MySQL] EC2 서버가 몇 시간 만에 꺼지는 이유와 해결 - OOM 문제 (0) | 2025.09.10 |