Chrome 115에서는 서드 파티 컨텍스트에서 파티셔닝하여 스토리지, 서비스 워커, 통신 API에 변경사항을 도입했습니다. 서드 파티 컨텍스트에서 사용되는 해당 API는 동일 출처 정책에 의해 격리되는 것 외에도 최상위 컨텍스트 사이트에 의해 격리됩니다.
서드 파티 스토리지 파티셔닝 지원을 구현할 시간이 없었던 사이트는 지원 중단 무료 체험판에 참여하여 일시적으로 파티션 나누기를 취소하고 (동일 출처 정책에 의한 격리는 계속 진행하지만 최상위 사이트별 격리는 제거) 사이트에 삽입된 콘텐츠에서 스토리지, 서비스 워커, 커뮤니케이션 API의 이전 동작을 복원할 수 있습니다. 이 지원 중단 체험판은 2024년 9월 3일 Chrome 127 출시와 함께 만료될 예정입니다. 이는 서드 파티 쿠키 액세스를 위한 지원 중단 기능 트라이얼과는 별개이며 스토리지 액세스만을 위한 것입니다.
서드 파티 쿠키가 아닌 스토리지 파티셔닝으로 인해 중단된 특정 사용 사례를 해결하기 위한 장기적인 솔루션으로 Chrome은 서드 파티에서 이미 서드 파티가 쿠키 액세스를 요청할 수 있는 Storage Access API (Chrome 117 기준 배송)를 통해 스토리지/커뮤니케이션 액세스 (쿠키 및 비쿠키 모두)를 요청할 수 있는 기능을 제안합니다.
Chrome 120부터 이 제안은 오리진 트라이얼을 통해 실험할 수 있습니다. 개발자는 이 출처 체험판에 참여하여 제안된 솔루션이 사용 사례를 어떻게 처리하는지 평가하고 지원 중단 체험판이 종료되기 전에 준비를 마쳐야 합니다.
오리진 트라이얼 세부정보
Chrome 120부터 Chrome은 Storage Access API의 제안된 확장 프로그램 (이전 버전과 호환 가능)을 사용하여 서드 파티 컨텍스트에서 파티션을 나누지 않은 스토리지 (쿠키 및 비쿠키)에 액세스할 수 있도록 오리진 트라이얼인 StorageAccessAPIBeyondCookies를 지원합니다.
기계
이 API는 다음과 같이 사용할 수 있습니다(삽입된 iframe에서 실행되는 JavaScript).
// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);
all
에 액세스하는 대신 특정 API 액세스만 원하는 경우 필요한 API 핸들의 이름만 전달하면 됩니다. 예를 들어 {sessionStorage: true}
를 전달하여 세션 저장소에만 액세스하거나 {indexedDB: true, locks:true}
를 전달하여 IndexedDB 및 웹 잠금에 액세스할 수 있습니다.
이 추가 확장 프로그램을 호출하는 것 외에도 쿠키 외 저장소에 액세스하는 것은 Storage Access API를 통한 쿠키 액세스에 대한 현재 요구사항과 일치합니다. 예를 들어 Chrome에서는 출처가 동일한 관련 웹사이트 세트 (RWS, 퍼스트 파티 세트의 새 이름)에 있으면 메시지가 표시되지 않습니다. 동일한 RWS에 속하지 않는 출처에는 Chrome의 Storage Access API 요청 메시지가 적용됩니다.
기간
오리진 트라이얼은 Chrome 120부터 Chrome 125까지 (또는 주요 시점의 2024년 8월 6일 이후)에 제공됩니다.
범위
Chrome 120에서는 DOM 저장소 (세션 및 로컬 저장소), 색인화된 DB, 웹 잠금만 사용할 수 있습니다.
Chrome 121에 캐시 스토리지, 원본 비공개 파일 시스템, 할당량, Blob 스토리지, 브로드캐스트 채널이 추가되었습니다.
Chrome 123에는 공유 작업자와 쿠키 포함에 대한 제어 기능이 추가되었습니다.
전용 작업자는 Chrome 120부터 작업자가 생성되기 전에 requestStorageAccess
가 호출된 경우 파티션을 나누지 않은 쿠키에 대한 액세스 권한을 상속합니다 (Storage Access API 핸들을 사용할 필요가 없음).
참여
- 서드 파티 컨텍스트에서 쿠키 및 비쿠키 저장소를 사용하는 방식을 평가합니다. 사용 사례 예시를 참고하면 이 제안서가 내 요구사항에 맞는지 이해하는 데 도움이 될 수 있습니다.
- Chrome 버전 120 이상을 실행하고 test-third-party-cookie-phaseout 플래그가 사용 설정되어 있는지 확인합니다.
- 먼저 오리진 트라이얼 토큰을 설정하지 않고 로컬에서 기능을 테스트하려면 브라우저에서 #enable-experimental-web-platform-features를 사용 설정하세요.
- 로컬에서 테스트를 완료하면 StorageAccessAPIBeyondCookies 오리진 트라이얼에 register하고 도메인 토큰을 받을 수 있습니다. 자세한 안내는 출처 무료 체험판 시작하기를 참고하세요. Chrome 출처 무료 체험판 문제 해결 가이드에서는 토큰이 올바르게 구성되었는지 확인하기 위한 전체 체크리스트를 제공합니다.
- HTTP 헤더나 HTML 메타 태그를 사용하거나 프로그래매틱 방식을 사용하여 Storage Access API 핸들을 사용해야 하는 iframe에 오리진 트라이얼 토큰을 삽입합니다. 이 API를 사용하려는 프레임에서 토큰을 삽입해야 합니다. 상위 프레임에 토큰을 삽입해도 하위 프레임에서 API가 사용 설정되지 않습니다.
document.requestStorageAccess(...)
를 호출하여 교차 사이트 iframe에서 Storage Access API 핸들을 가져옵니다. 이 호출이 성공하기 위한 요구사항은 Storage Access API 문서를 참조하세요.- 사용 가능한 경우 Storage Access API 핸들을 사용하도록 iframe에서 관련 저장소를 이전합니다. 예를 들어
window.sessionStorage.setItem(...)
호출은handle.sessionStorage.setItem(...)
가 됩니다. - 웹사이트를 열고 스토리지 액세스 핸들이 정상적으로 작동하는지 확인합니다.
- 오리진 트라이얼 참여를 중지하려면 3단계에서 추가한 토큰을 삭제합니다.
- 의견을 제출하거나 발생한 문제를 Storage Access API 쿠키 외 스토리지 GitHub 저장소에 신고하세요.
데모: Storage Access API를 사용하여 파티션을 나누지 않은 로컬 스토리지에 액세스
다음 데모는 Storage Access API를 사용하여 타사 iframe에서 파티션을 나누지 않은 방송 채널에 액세스하는 방법을 보여줍니다.
https://saa-beyond-cookies.glitch.me/
데모를 보려면 test-third-party-cookie-phaseout 플래그가 사용 설정된 Chrome 121 이상이 필요합니다.