임시보관/에러모음

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

귀찮은 개발자 2024. 2. 9. 22:53
더보기

2022 년도에 작성된 글 입니다.

서버에서 API 스팩을 잘못 개발했을 경우 클라이언트 개발자에게서 겪는 문제이다. 

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

살다살다 아래와 같은 에러를 만나게 됬다.

error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:561:11)
    at sendJson (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/api-utils.js:37:5)
    at ServerResponse.apiRes.json (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/api-utils.js:6:297)
    at handler (webpack-internal:///./pages/api/menus.ts:21:21)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async apiResolver (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/api-utils.js:8:1)
    at async DevServer.handleApiRequest (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/next-server.js:64:462)
    at async Object.fn (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/next-server.js:56:492)
    at async Router.execute (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/router.js:23:67)
    at async DevServer.run (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/next-server.js:66:1042)
    at async DevServer.handleRequest (/Users/kyungseo.park/Documents/sunyoh-web/node_modules/next/dist/next-server/server/next-server.js:34:504) {
  code: 'ERR_HTTP_HEADERS_SENT'
}

원인

HTTP에서 응답이 2번옴

해결방법 : HTTP 1회 요청에 1회 응답만 오도록 코드를 수정한다.

해당 이슈는 2021년 7월에 발생했으나, 2019년도에 동일한 이슈를 경험한 적이 있다.
당시 스팩은 jquery + php 였다.

상황은 버튼 클릭 시 3개의 파일 다운로드를 하는 것이었는데 팝업으로 이벤트가 뜨면서 다운로드가 안됬다.
그렇기에 zip 으로 압축해서 다운로드를 하게 했다.