스웨거 요청을 HTTPS로 보내자+CORS를 해결하자

Alex·2025년 2월 7일
0

Plaything

목록 보기
100/118

포스트맨에서 https로 요청을 보내면 잘 가지만
스웨거에서는 http로 요청을 보내게 되는 게 디폴트인것같고(curl을 보면 그렇게 간다)
그래서 Mixed content에러가 뜬다.

HTTPS 페이지에 일반 평문인 HTTP 프로토콜을 사용하는 것을 Mixed Content라고 한다.

Mixted Content는 보안적으로 안전하지 않은 HTTP 프로토콜을 사용해서 리소스를 요청할 떄 해커가 네트워크 연결을 도청하고 중간자 공격을 할 수 있기에 웹브라우저에서 차단하는 경우가 많다.

그래서, 설정파일에 적어놓은 스웨거 도메인 주소를 http에서 https로 변경했더니 이 문제는 해결됐다. 그리고 위처럼 설정 값을 주입해준다.

그런데, 이젠 403 CORS 문제가 떴다....

우선 nginx단에서 발생한 문제는 아닌거같다.
스웨거 관련된 응답들은 모두 200으로 정상 처리된다.

스프링 시큐리티 설정을 계속 변경해봐도 안돼서 더 찾아보니
csrf때문이라는데 이걸 이미 비허용해놓은 상태다.

혹시 도메인 주소를 잘못 넣었나?..싶었는데..

그 이유가 맞았다.

그전에는 "https://plaything.team/"이런식으로 써서 잘못된 것으로 보인다.

서치를 해보니 이건 내가 Origin에 대한 이해도가 떨어져서 생긴 문제로 보인다.

origin이 동일하다고 판단되려면 프로토콜/도메인/포트번호까지 동일하다고 판단돼야 한다.

"https://plaything.team/*" 이렇게 들어가는 /*이건 origin에서 아무런 의미가 없다.

그래서 도메인:포트번호를 넣은 origin이 들어갔을 때 CORS문제가 해결된 것이다. https는 443 포트번호라는 걸 브라우저가 자동 인식해서 443포트는 빼도 정상 작동한다.

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글