개발/http, server

[http] 405 (Not Allowed) 해결..

prpn97 2023. 11. 28. 14:11

발단

  웹페이지를 구축하면서 분명 잘 실행되던 웹페이지가 api 요청을 보내면 바로 405를 반환하는 문제가 생겼다. 구글링해보면 대충 서버에서 인지하고 있는 요청이 아니라는 뜻으로 보인다. nginx나 다른 세팅을 봐도 문제는 없는데, 그리고 문제가 있을거면 애초에 정적파일도 보여지면 안될텐데 왜 api요청에서 문제가 생길까?

 

해결 과정

  결국 405가 나오는 근본적인 원인은 서버에서 원하지 않는 요청이 들어와서 뱉어냈다는건데, 포스트맨에서 테스트하고 바로 깨달았다. 스웨거에서 테스트할땐 알아서 세팅된 Url을 반환해주니 이해하지 못했는데, api서버로 요청을 보낼때 api로 시작하는 엔드포인트로 보내야 하는데 그렇지 않고 스샷과 같이 auth/login 으로 보내고 있는 것을 확인할 수 있었다. 

 

 

  그렇다면 처음에는 api/auth/login 으로 세팅하여 잘 보내고 있었는데 갑자기 왜 api가 빠진 상태로 보내고 있던 것일까? 생각해보니 두 서버에 요청을 보내면서.. 환경변수를 ADMIN, MAIN 으로 분기하면서 기존 환경변수와 네이밍이 달라져 값이 누락되는 문제였다. 

그래... 환경변수 없이 돌렸는데 그래도 실행이 된게 어디냐.. 가 아니라 내가 joi 라이브러리로 환경변수 검사를 하는데 변경한 부분들을 누락하고 아예 인지하지 못해서 생긴 문제다. 

REACT_APP_ADMIN_API_URL=http:/ :8081/api
REACT_APP_MAIN_API_URL=http:// :8082/api

  

 

  정적파일이 빌드된 상태에서 환경변수로 앞쪽을 채워야 하는데 채우지 않고 뒤의 엔드포인트만 넣어놓으니 결론적으로는 엄한 곳에 요청을 보내서 생기는 문제였다. 

 

코멘트

로컬에서 환경변수에 대한 변동사항이 있을 때 바로바로 배포하자마자 환경변수도 같이 업데이트해주자...! 꼭..!

728x90