홍차의 미로찾기

[springdoc open-api] swagger Failed to fetch 오류 본문

프로그래밍/오류 정리

[springdoc open-api] swagger Failed to fetch 오류

홍차안디 2022. 6. 14. 09:26
반응형

회사에서 spring boot와 open-api swagger를 사용하고 있다.
이번에 새로운 프로젝트에 1.6.8 버전의 open-api를 추가했는데 api 실행 시 아래와 같은 오류가 발생했다.
로컬에서는 정상 작동하는데 aws에 올린 서버에서 문제가 되었다. (local - http / aws 서버 - https)


Failed to fetch.
Possible Reasons:

CORS
Network Failure
URL scheme must be "http" or "https" for CORS request.


swagger cors 오류

확인해보니 요청 URL이 http 다. 내가 실행한서버는 https인데
아래를 보면 서버 url과 swagger 요청 url 이 다른걸 확인할 수 있다

swagger 요청 url이 https가 아닌 http로 나옴

구글링해서 원인은 아직 확인하지 못했지만 해결법은 찾았다.
servers url 설정으로 "/"를 넣어주면 현재 url로 요청된다. https 도 http 로 바뀌지않고 잘 나온다.
open api 설정 메소드에서 .addServersItem(new Server().url("/")) 를 추가한다.
만약, url 메소드에 full url을 입력하면 swagger 화면에 servers도 해당 url이 찍힌다.
그럼 api 요청 url도 동일하게 나옴.
다만, "/" 로 설정한 경우에는 자동으로 서버 url을 따라가는 것 같다.

@Bean
public OpenAPI customOpenAPI() {
	return new OpenAPI().addServersItem(new Server().url("/"))
			.components(new Components().addSecuritySchemes("basicScheme",
					new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("basic")))
			.info(new Info().title("springdoc API").version("V1")
					.license(new License().name("Apache 2.0").url("<http://springdoc.org>")));
}

[참고한 글]
https://github.com/springdoc/springdoc-openapi/issues/726
https://github.com/springdoc/springdoc-openapi/issues/118
https://github.com/springdoc/springdoc-openapi/issues/769

반응형
Comments