답수실Log
답수실Log | 220916 | ERROR: Cannot set headers after they are sent to the client
답수
2022. 9. 16. 16:08
728x90
반응형
리스폰스 메소드를 보내는 로직을 작성하면서 자주 마주쳤던 에러이고, 매번 마주칠 때마다 잊어버리고 구글링 하는 내 모습이 바보 같아서 글로 남긴다.
ERROR: Cannot set headers after they are sent to the client
이 에러는 서버가 클라이언트에게 둘 이상의 응답을 보내려고 할 때 발생하는 오류다. 즉 클라이언트에서 서버에게 api를 요청했을 때, 요청에 맞는 리스폰스만 보내줘야 하는데, 백엔드 로직 내에 두 개 이상의 리스폰스를 보내게 되는 상황이 발생해서 이 오류가 뜨는 것이다.
예를 들면, node(express)의 경우, HTTP Response의 sendStatus()라는 메소드가 있다. res에 이 메소드를 설정하면 내가 설정한 상태 코드를 리스폰스로 보내는 것인데, api 요청에 의해 실행되는 하나의 함수에서 sendStatus 메소드가 여러 번 사용되거나, 이 메소드처럼 바로 응답을 보내는 메소드가 있다면, 여러 개의 응답이 보내지기 때문에 에러가 발생하는 것이다.
즉 조금만 집중하고 신경쓰면 잘 마주치지 않을 사소한 에러이기 때문에, 코드 한 줄 한 줄 작성할 때 더 디테일하게 신경쓰도록 노력해야 할 것 같다.
728x90
반응형