본문 바로가기
답수실Log

답수실Log | 220916 | ERROR: Cannot set headers after they are sent to the client

by 답수 2022. 9. 16.
728x90
반응형

 


리스폰스 메소드를 보내는 로직을 작성하면서 자주 마주쳤던 에러이고, 매번 마주칠 때마다 잊어버리고 구글링 하는 내 모습이 바보 같아서 글로 남긴다.

 

ERROR: Cannot set headers after they are sent to the client

 

이 에러는 서버가 클라이언트에게 둘 이상의 응답을 보내려고 할 때 발생하는 오류다. 즉 클라이언트에서 서버에게 api를 요청했을 때, 요청에 맞는 리스폰스만 보내줘야 하는데, 백엔드 로직 내에 두 개 이상의 리스폰스를 보내게 되는 상황이 발생해서 이 오류가 뜨는 것이다.

 

예를 들면, node(express)의 경우, HTTP Response의 sendStatus()라는 메소드가 있다. res에 이 메소드를 설정하면 내가 설정한 상태 코드를 리스폰스로 보내는 것인데, api 요청에 의해 실행되는 하나의 함수에서 sendStatus 메소드가 여러 번 사용되거나, 이 메소드처럼 바로 응답을 보내는 메소드가 있다면, 여러 개의 응답이 보내지기 때문에 에러가 발생하는 것이다.

 

즉 조금만 집중하고 신경쓰면 잘 마주치지 않을 사소한 에러이기 때문에, 코드 한 줄 한 줄 작성할 때 더 디테일하게 신경쓰도록 노력해야 할 것 같다.

 

 

728x90
반응형
LIST

댓글