[Bug] 포트 간 쿠키 공유 실패로 인한 무한 리다이렉트 루프 해결 #13

Closed
opened 2026-04-13 11:51:33 +09:00 by kyy · 0 comments
Owner

현상

로그인 성공 후에도 civil-engineering-lab (포트 4321)으로 복귀했을 때, 인증 시스템이 세션 쿠키를 인식하지 못하여 다시 headless-login-demo (포트 4000)로 무한 리다이렉트되는 현상이 발생합니다.

원인 분석

  1. 쿠키 도메인 및 포트 간 불일치: localhost:4000 서버에서 발급한 auth_session 쿠키가 브라우저의 보안 정책(SameSite 등)이나 도메인 명시 누락으로 인해 localhost:4321 서버로의 요청 시 전달되지 않을 수 있습니다.
  2. Astro Prerendering 간섭: civil-engineering-lab의 일부 페이지가 정적(Static)으로 미리 렌더링되면서, 미들웨어가 HTTP 헤더에 접근하지 못하는 제약사항이 발생했습니다.

해결 가이드 및 계획

  • 쿠키 발급 옵션 강화 (headless-login-demo):
    • 쿠키 설정 시 domain: 'localhost' 명시
    • sameSite: 'lax' 또는 개발 환경을 위한 유연한 속성 적용
  • 강제 SSR 설정 (civil-engineering-lab):
    • astro.config.mjs의 모든 페이지가 서버 사이드 렌더링을 사용하도록 output: 'server' 보장 (이미 일부 조치됨)
  • 디버깅:
    • 브라우저 개발자 도구의 'Network' 및 'Application' 탭을 통해 Set-Cookie 헤더와 실제 전송되는 Cookie 헤더를 대조 확인

기대 결과

  • 포트 번호에 관계없이 동일 도메인(localhost) 내에서 세션 쿠키가 공유되어 한 번의 로그인으로 모든 연동 서비스에 접근 가능하게 됨.
### 현상 로그인 성공 후에도 `civil-engineering-lab` (포트 4321)으로 복귀했을 때, 인증 시스템이 세션 쿠키를 인식하지 못하여 다시 `headless-login-demo` (포트 4000)로 무한 리다이렉트되는 현상이 발생합니다. ### 원인 분석 1. **쿠키 도메인 및 포트 간 불일치**: `localhost:4000` 서버에서 발급한 `auth_session` 쿠키가 브라우저의 보안 정책(SameSite 등)이나 도메인 명시 누락으로 인해 `localhost:4321` 서버로의 요청 시 전달되지 않을 수 있습니다. 2. **Astro Prerendering 간섭**: `civil-engineering-lab`의 일부 페이지가 정적(Static)으로 미리 렌더링되면서, 미들웨어가 HTTP 헤더에 접근하지 못하는 제약사항이 발생했습니다. ### 해결 가이드 및 계획 - [ ] **쿠키 발급 옵션 강화 (`headless-login-demo`)**: - 쿠키 설정 시 `domain: 'localhost'` 명시 - `sameSite: 'lax'` 또는 개발 환경을 위한 유연한 속성 적용 - [ ] **강제 SSR 설정 (`civil-engineering-lab`)**: - `astro.config.mjs`의 모든 페이지가 서버 사이드 렌더링을 사용하도록 `output: 'server'` 보장 (이미 일부 조치됨) - [ ] **디버깅**: - 브라우저 개발자 도구의 'Network' 및 'Application' 탭을 통해 `Set-Cookie` 헤더와 실제 전송되는 `Cookie` 헤더를 대조 확인 ### 기대 결과 - 포트 번호에 관계없이 동일 도메인(`localhost`) 내에서 세션 쿠키가 공유되어 한 번의 로그인으로 모든 연동 서비스에 접근 가능하게 됨.
kyy closed this issue 2026-04-13 13:13:51 +09:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kyy/headless-login-demo#13