문제 발생
Nginx, certbot을 이용하여 HTTPS 적용을 마쳤다.
그리고 기분 좋게 스웨거로 잘 되는지 확인해보려 했는데 갑자기 아래처럼 CORS 에러가 발생했다.
문제 해결
분명 HTTPS 적용 전에는 잘 됐는데 무엇이 문제인지 생각해보았다.
바뀐건 HTTPS, Nginx 설정 뿐이어서 이 두가지를 위주로 검색을 해보고 답을 찾았다.
결론은 스웨거 서버 URL 설정 기본 값이 http://localhost:8080 이라서 발생한 문제였다.
HTTPS 적용 전에는 프로토콜이 같으므로 문제없었지만 HTTPS 적용 후 프로토콜이 달라져서 CORS 에러가 발생한듯 하다.
그래서 SwaggerConfg를 아래처럼 수정하여 문제를 해결했다.
SwaggerConfig
AppConfg로 yml 파일로 백엔드 도메인을 환경변수로 분리하였다.
yml 파일은 이 글에서와 동일하다.
이러면 로컬에선 서버 URL이 localhost:8080이고 배포 시에는 배포 도메인으로 바뀌므로 CORS 문제를 해결할 수 있다.
@Configuration
@RequiredArgsConstructor
@SecurityScheme(
name = "jwt-cookie",
type = SecuritySchemeType.APIKEY,
in = SecuritySchemeIn.COOKIE
)
public class SwaggerConfig {
private final AppConfig appConfig;
@Bean
public OpenAPI serverApiConfig() {
Server server = new Server();
server.setUrl(appConfig.getBackUrl());
server.description("백엔드 도메인");
return new OpenAPI()
.addServersItem(server)
.info(new Info().title("PAWLAND API")
.description("PAWLAND API SWAGGER UI입니다."));
}
}
'백엔드 > 트러블 슈팅' 카테고리의 다른 글
MySQL 연결 시 "Public Key Retrieval is not allowed" (0) | 2024.05.21 |
---|---|
CORS 트러블슈팅 - PUT, DELETE 요청 (0) | 2024.05.07 |
SpringDataRedis 사용 시 GithubActions 빌드 에러 (0) | 2024.04.22 |
Unable to load class 'javax.persistence.Entity' (0) | 2024.04.10 |
SpringBoot 3.2 버전부터 @ConfigurationProperties 사용 시 주의점 (0) | 2024.04.03 |