eungyeole.blog

왜 항상 같은 곳으로 리다이렉트 하지?

작성일: 2023.06.03

feltpen 개발 시리즈 (1)편:

feltpen에는 로그인 후 가장 최근에 들어간 워크스페이스로 redirect 시켜주는 편의 기능이 존재하는데 새로운 워크스페이스를 만들어도 항상 같은 워크스페이스로 이동하는 문제가 발생했다.


오류 발생 flow

  1. a 워크스페이스 접속
  2. b 워크스페이스 접속
  3. 로그인시 a 워크스페이스로 redirect 됨


정상 작동 flow

  1. a 워크스페이스 접속
  2. b 워크스페이스 접속
  3. 로그인시 b 워크스페이스로 redirect 됨


원인은 nextjs의 permanent 옵션

permanent 옵션을 소개하기에 앞서 307, 308 리다이렉트의 차이점을 알고 가야 한다.

307, 308 리다이렉트란?

  • 307 Temporary Redirect는 임시적인 리다이렉트이다.
  • 308 Permanent Redirect는 영구적인 리다이렉트이다.


자세한 내용이 알고 싶은 사람은 여기로

permanent란?

아래 코드를 보자 permanettrue로 표시되어 있다. 이 옵션은 redirect의 영구적인 상태를 의미한다. permanenttrue로 설정되어 있으면 308 영구 리다이렉트를, false로 설정되어 있으면

307 임시 리다이렉트를 하게 된다.


예시 코드 입니다.

export const getServerSideProps = () => {
return {
redirect: {
destination: `/workspaces/${workspaceId}`,
permanent: true,
}
}
}


이 코드로 인해 영구적인 리다이렉트가 되면서 항상 같은 워크스페이스로 이동하게 된 것이다.


결론

즉, 원하던 결과를 만들려면 permanent을 false로 만들어주면 되는 것이다.


+) 이 이슈는 nextjs에서 발생했지만 permanent 옵션은 정말 많은 곳에 쓰이고 있는 만큼(예: k8s ingress) 차이를 분명히 알아두면 좋을 것 같다.