mirror of
https://github.com/sotam0316/brain_dogfood.git
synced 2026-04-24 19:48:35 +09:00
Fix: JSON parsing error on session expiry and enhance API error handling
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# [Bug Report] 세션 만료 시 메모 저장 에러 (Unexpected token '<')
|
||||
|
||||
## 버그 내용
|
||||
- **현상**: 메모 작성 후 저장 버튼을 눌렀을 때 `Unexpected token '<', "<!DOCTYPE "... is not valid JSON` 에러 메시지 팝업 발생.
|
||||
- **상세**: 장시간 창을 열어두어 세션이 만료된 상태에서 API 요청(POST/PUT)을 보낼 때, 서버가 401 에러 대신 로그인 페이지(HTML)로 리다이렉트 시킴. 프론트엔드는 JSON 응답을 기대했으나 HTML을 받게 되어 파싱 에러가 발생함.
|
||||
|
||||
## 조치 사항
|
||||
1. **API 인증 방식 수정 (`app/auth.py`)**:
|
||||
- `login_required` 데코레이터에서 `/api/` 경로 요청에 대해서는 리다이렉트 대신 `401 Unauthorized` JSON 응답을 반환하도록 수정.
|
||||
2. **에러 핸들링 강화 (`app/routes/memo.py`)**:
|
||||
- `create_memo`, `update_memo` 함수 전체를 `try-except`로 감싸 데이터 처리 중 발생하는 예외가 항상 JSON 형식으로 반환되도록 보장.
|
||||
3. **전역 에러 핸들러 개선 (`app/__init__.py`)**:
|
||||
- `403 Forbidden` 및 기타 예외 발생 시 API 요청인 경우 JSON 응답을 반환하도록 처리.
|
||||
|
||||
## 결과
|
||||
- 세션이 만료된 상태에서 저장 시, 프론트엔드가 401 상태 코드를 정확히 인지하여 로그인 페이지로 자연스럽게 유도됨.
|
||||
- 예상치 못한 서버 에러 발생 시에도 사용자에게 깨진 코드가 아닌 명확한 에러 메시지 제공 가능.
|
||||
|
||||
## 향후 주의 사항
|
||||
- 새로운 API 라우트 추가 시 반드시 `jasonify`를 통한 JSON 응답을 보장해야 함.
|
||||
- 프론트엔드(`api.js`)의 `res.ok` 체크 로직이 302 리다이렉트 등을 만나면 HTML을 받을 수 있음을 항상 인지하고 백엔드에서 적절한 상태 코드(4xx)를 반환할 것.
|
||||
Reference in New Issue
Block a user