백/프론트를 분리하고...클라 없이 api만 개발하다보니 막상 연결하고나서는 정말 많은 문제들이 쏟아지게 됐습니다. 평소에는 SSR로 뷰를 구현하거나 로컬에서 서버+클라를 둘 다 돌려서 테스팅해봐서 몰랐던 문제인데ㅠㅠ 낙관코딩하다가 맞닥뜨리게 되니 굉장히 힘들었던 것 같습니다. 지나고 나니 도메인을 붙였으면 좀 나았을까 싶네요.(결국 포트때매 cross domain인건 어쩔 수 없지만)
언젠간 다시 겪을 미래의 나를 위해 오늘도 기록😂
로그에 나온대로 allow-credential=true
로 설정했을 때는 Access-Control-Allow-Origin
를 전부 허용(*)할 수 없다는 에러입니다. 이 경우에는 허용 도메인을 특정해주거나, credential을 허용하지 않으면 해결이 됐습니다.
다음 복병입니다... 클라 개발자분들이 전부 로컬에서 테스팅하는 것을 생각해서 Access-Control-Allow-Origin
을 전부 허용하고 credential
을 막아뒀는데, OAuth2가 제대로 동작하지 않는 문제가 발생했습니다.
아래는 문제의 일부이고, 실제 원인은 정보 제공 동의 창이 뜬 후에 request url 뒤에 query param으로 붙어야 할 데이터가 없어서였습니다.
OAuth2를 서버사이드에서 처리하다보니 origin에서 헤더에 토큰 형식으로 넘겨주는 데이터가 필요했던게 원인이었습니다. 그런데 crendential을 막아버렸으니...
결국 allowCrenential=true; allowedOrigins("http://localhost:3000")
로 변경해 해결했습니다.
추후 상세히 다뤄볼 수 있다면 좋겠지만, 에러를 겪으면서 cors에 대해 몇가지를 배울 수 있었습니다.
4번을 통해 왜 Postman으로 보내는 리퀘스트는 정상적으로 처리됐는지 알 수 있었습니다...
1. unsupported config option
이 에러는 networks가 service 안에 정의되어있어서 발생했습니다. 인덴트를 옮겨 같은 서비스와 depth로 바꿔줬습니다.
2. invalid type 에러
이 에러는 postgres의 설정이 아래와 같이 되어있어서 발생했습니다. - key=value
형식은 String, - key: value
형식은 array로 적용됩니다.
3. Could not get lock /var/lib/dpkg/lock-frontend
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
기존 수동으로 설치해뒀던 redis를 삭제하는 과정에서 발생한 리눅스 패키지 관련 에러입니다. 아래 코드로 해결이 가능합니다.
# 실행 중인 프로세스 모두 종료
$ sudo killall apt apt-get
# 관련 파일 제거
$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
$ sudo rm /var/lib/dpkg/lock*
# 패키지 업데이트
$ sudo dpkg --configure -a
$ sudo apt update
Postman으로 CORS에러 못잡는 이유
브라우저에서 POST요청 전송
credentials와 allow origin
CORS는 왜 이렇게 우리를 힘들게 하는걸까?
Spring security, cors error when enable Oauth2
CORS
https://wonit.tistory.com/572
SpringSecurity cors
https://duooo-story.tistory.com/22
CORS의 원인 및 해결방법
withCredential
리눅스 dpkg 에러