nginx/site.conf 는 /v1 을 같은 오리진으로 프록시하고 주석에도 "앱과 같은 오리진이라 프리플라이트가 아예 발생하지 않는다" 고 적혀 있는데, compose 빌드 인자 기본값이 VITE_API_BASE_URL=http://localhost:9800 이었다. :80 으로 앱을 열면 번들이 :9800 을 부르므로 스스로 크로스 오리진이 되고, CLIENT_URL 기본값(3000~3005)에 http://localhost 가 없어 로그인만 실패한다. 증상이 사람을 속인다 — 서버는 200 에 토큰까지 내려보내고 브라우저가 allow-origin 이 없어 그 응답을 버리므로, 화면에는 "로그인에 실패했습니다" 만 뜬다. 비밀번호를 의심하게 된다. - docker-compose.yml · .env.example: 기본값을 앱과 같은 오리진(http://localhost)으로. CORS 를 허용해 뚫는 게 아니라 크로스 오리진을 만들지 않는다 - .env.example: PUBLIC_API_BASE_URL 을 주석이 아니라 값으로 내놨다 — 주석으로 두면 compose 기본값이 이기고, 그 기본값이 문제였다 검증: down -v 후 up -d --build → 번들의 localhost:9800 참조 0건 · POST http://localhost/v1/auth/login 200(프리플라이트 없음) · 프리렌더 재굽기 2건 · / · /s/ · /s/<slug> 전부 200. |
||
|---|---|---|
| .. | ||
| API_USAGE.md | ||
| ARCHITECTURE.md | ||
| COLLECTION_SEO_AEO_FLOW.md | ||
| DATA_SOURCE_RESEARCH.md | ||
| DECISIONS.md | ||
| DEPLOY.md | ||
| DEVELOPMENT_DIRECTION.md | ||
| DEVLOG.md | ||
| PRODUCT.md | ||
| SERVERS.md | ||