더보기
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 으로 압축해서 다운로드를 하게 했다.