spa fallback 직접 접근은 서버 fallback 뒤 라우터가 복원한다 앱 내부 이동은 History API가 처리하지만 새로고침과 깊은 URL 직접 접근은 서버가 같은 HTML을 돌려줘야 한다.
경계 서버 책임 클라이언트 책임 실패 신호
Deep URL직접 접근 정적 파일이 아닌 앱 경로 요청을 앱 진입점으로 보낸다. 현재 pathname을 읽어 첫 화면 후보를 고른다. 새로고침에서 서버 404 페이지가 보인다.
GET request문서 요청 HTML 상태 코드를 성공으로 반환하고 JS asset 경로를 유지한다. 받은 HTML에서 앱 번들을 로드한다. HTML은 왔지만 asset이 잘못된 base path로 404가 난다.
Fallback HTML진입점 모든 앱 경로에 같은 index 문서를 돌려준다. 부팅 후 브라우저 주소를 기준으로 라우터를 실행한다. 서버는 HTML을 줬지만 라우터가 빈 화면을 만든다.
Route match화면 선택 라우트 내부 구조를 해석하지 않고 정적 응답만 맡는다. pathname과 라우트 테이블을 비교해 컴포넌트를 고른다. 경로 매칭 실패 로그가 나거나 기본 화면만 나온다.
Data load내용 복원 API와 정적 문서 요청을 fallback과 구분한다. 선택된 화면에 필요한 데이터만 다시 가져온다. 문서 fallback이 API 요청까지 가로채 JSON 대신 HTML을 준다.