500에러. Invalid character in header content ["Set-Cookie"]

김하은·2023년 6월 1일
0

회원가입 api를 작성해보았다.
그런데 가입하기 버튼을 클릭했는데 계속해서 500 Internal Server Error가 발생하였다.

코드도 다시 살펴보고 내가 작성한 값이 제대로 들어가지 않았나 싶어 console.log도 찍어보고 chatGPT에도 물어봤지만 500에러에 대해 해결할 수 없었다.
계속 CORS에러 같은것이 나는 것이 보여 어디서 설정이 잘못되었을까 다시 돌아보다가 아, 서버로그를 다시 보자!!

서버로그를 다시 살펴본 결과 빨간 error부분에서 힌트를 찾아볼 수 있었다.

바로

TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["Set-Cookie"]

이런 에러가 난 것이었다.
cookie설정을 할때 무언가를 잘못 넣어준 것이었다.
그대로 복사를 해 검색을 진행하였다.
나와 같은 에러가 발생한 분의 글을 보았다.
쿠키에서 expires로 저장하는 날짜 형식과 , new Date로 설정하는 날짜 형식이 서로 달라 생가는 문제였던 것이었다.

쿠키의 Expires 옵션에는 "Wdy, DD−Mon−YYYY HH:MM:SS GMT" 형태로 날짜값이 주어져야 한다고 한다.
.toUTCString()을 붙여주어 쿠키의 날짜형식으로 변환시켜주니 해결이 되었고, 무사히 회원가입 버튼을 누르고 access_token이라는 지정해준 쿠키이름으로 쿠키가 생성된것도 확인이 되었다.

물론 해당 에러에 대한 모든 해결책이 이것은 아니다.
줄바꿈이 문제일 수도 있다.

일단 내가 찾아본 글작성자분과 나는 expires의 날짜 형식의 문제였다.

꼼꼼히 살펴보도록한다.

추가로

브라우저에서 쿠키 만료일자를 지정할 때는 UTC/GMT 포맷을 사용해야한다. 쿠키에 저장하는 타입은 GMT이고 Javascript, Date에 toGMTString() 메소드가 잘 작동하지만, toUTCString() 이 메소드를 사용하는것이 권장되는 듯 하다.

참고: https://nauco.tistory.com/22
https://merrily-code.tistory.com/162

0개의 댓글