피드로 돌아가기
Building a Cookie Manager Chrome Extension: What I Learned From the MV3 Transition
Dev.toDev.to
Frontend

MV3 Service Worker 제약을 극복한 Port 기반 실시간 Cookie 모니터링 구현

Building a Cookie Manager Chrome Extension: What I Learned From the MV3 Transition

SHOTA2026년 5월 8일7intermediate

Context

Chrome Extension Manifest V3(MV3) 전환에 따른 Persistent Background Page 제거로 인한 상태 유지 불가 문제 발생. 특히 Service Worker의 비정기적 종료로 인해 chrome.cookies.onChanged 이벤트의 실시간 감지가 불가능한 구조적 한계 직면.

Technical Solution

  • Popup과 Service Worker 간 chrome.runtime.connect를 통한 전용 Port 연결로 Service Worker 활성 상태 유지
  • Port 연결 시점에 onChanged 리스너를 등록하고 Disconnect 시 즉시 리스너를 제거하는 생명주기 관리 로직 적용
  • chrome.cookies.set 호출 시 도메인 앞의 점(.) 제거 및 URL 빌드 로직을 통해 Silent Failure 방지 설계
  • httpOnly 플래그 보존을 통해 JavaScript 접근 제한을 우회하는 브라우저 API 레벨의 데이터 조작 구조 구현
  • Session 및 Persistent 쿠키의 구분을 위해 expirationDate 존재 여부에 따른 분기 처리 로직 설계

1. MV3 Service Worker의 비활성화를 방지하기 위해 Popup/Side-panel 간 Port 연결 상태 확인

2. `chrome.cookies.set` 사용 시 Host-only 설정 및 도메인 문자열 포맷팅 정확성 검증

3. 세션 유지 및 만료일 설정 시 `expirationDate` 필드의 null 처리 케이스 구분 적용

원문 읽기