방금 있었던 재미있는 이슈
nextjs 를 nodejs 런타임에서 띄우고 api gateway를 사용중인 환경입니다
현재 개발단계이고 프록시를 어쩌다보니 api gateway가 아니라 nodejs위에서 해야되는 상황입니다.
브라우저 > nodejs > api gateway > api server 로 요청이 들어가는데
nodejs에서 api gateway를 origin으로 사용하는 GET request를 던졌는데 에러가 발생합니다.
[cause]: [Error [SocketError]: other side closed] { code: 'UND_ERR_SOCKET', ……
뭔가 바디를 읽는 와중에 소켓이 닫혀서 그렇다는 것 같습니다.
베프 클로드랑 디버깅하면서 fetch, axios, got 여러 방법으로 옵션을 바꿔가면서 요청을 던져봐도 안되다가
api server에 직접 찌를때는 성공한다는 것을 발견하고 api gateway 관리자분께 이슈를 던져봅니다
boolean A = origin이 api gateway?
boolean B = response body에 Attachments라는 key, value가 들어있는가?
boolean C = request를 nodejs에서 보냈는가?(브라우저 주소창에 쳤을때는 성공을 하는군요)
A && B && C 이면 에러가 발생합니다. 왤까요???
결과적으로 에러가 발생한 이유는 금방 발견이 되었습니다.
Attachments 가 파일을 다운로드 할 수 있는 링크인데 게웨가 url을 내부값에서 사용할 수 있는 값으로 변경해서 준다고 하더라고요. 근데 body가 바뀌었는데 헤더의 content-length가 안바뀐 상태였고 nodejs에서는 스트림을 이전 길이만큼만 읽고 byte를 스트링으로 변환하려고 했다가 실패한거였어요.
브라우저에서 성공했던 이유는 아마 조금 더 관대하게 만들어져서 그랬던걸로 결론을 지었습니다😑