이 문서는 Shared Storage 및 Private Aggregation 사용을 위한 빠른 시작 가이드입니다. Shared Storage는 값을 저장하고 Private Aggregation은 집계 가능한 보고서를 생성하므로 두 API를 모두 이해해야 합니다.
대상: 광고 기술 및 측정 제공업체
Shared Storage API
크로스 사이트 추적을 방지하기 위해 브라우저는 로컬 스토리지, 쿠키 등 모든 형태의 스토리지를 파티셔닝하기 시작했습니다. 하지만 파티션되지 않은 스토리지가 필요한 사용 사례도 있습니다. Shared Storage API는 개인 정보 보호 읽기 액세스 권한으로 여러 최상위 사이트에 무제한 쓰기 액세스 권한을 제공합니다.
공유 스토리지는 컨텍스트 출처 (sharedStorage 호출자)로 제한됩니다.
공유 스토리지는 출처별 용량 제한이 있으며 각 항목은 최대 글자 수로 제한됩니다. 한도에 도달하면 더 이상 입력이 저장되지 않습니다. 데이터 스토리지 한도는 공유 스토리지 설명서에 설명되어 있습니다.
공유 스토리지 호출
광고 기술은 JavaScript 또는 응답 헤더를 사용하여 공유 저장소에 쓸 수 있습니다. 공유 스토리지에서 읽기는 worklet이라는 격리된 JavaScript 환경 내에서만 발생합니다.
JavaScript 사용 광고 기술은 JavaScript 워클릿 외부에서 값을 설정, 추가, 삭제하는 등의 특정 공유 스토리지 기능을 실행할 수 있습니다. 하지만 공유 스토리지를 읽고 비공개 집계를 실행하는 등의 함수는 JavaScript 워크릿을 통해 완료해야 합니다. JavaScript worklet 외부에서 사용할 수 있는 메서드는 제안된 API 노출 영역 - worklet 외부에서 확인할 수 있습니다.
작업 중에 워크릿에서 사용되는 메서드는 제안된 API 노출 영역 - 워크릿에서에서 확인할 수 있습니다.
응답 헤더 사용
JavaScript와 마찬가지로 공유 스토리지에서 값을 설정, 추가, 삭제하는 등의 특정 함수만 응답 헤더를 사용하여 실행할 수 있습니다. 응답 헤더에서 공유 스토리지를 사용하려면
Shared-Storage-Writable: ?1가 요청 헤더에 포함되어야 합니다.클라이언트에서 요청을 시작하려면 선택한 메서드에 따라 다음 코드를 실행합니다.
fetch()사용fetch("https://a.example/path/for/updates", {sharedStorageWritable: true});iframe또는img태그 사용<iframe src="https://a.example/path/for/updates" sharedstoragewritable></iframe>iframe또는img태그와 함께 IDL 속성 사용let iframe = document.getElementById("my-iframe"); iframe.sharedStorageWritable = true; iframe.src = "https://a.example/path/for/updates";
자세한 내용은 공유 스토리지: 응답 헤더를 참고하세요.
공유 스토리지에 쓰기
공유 저장소에 쓰려면 JavaScript 워크릿 내부 또는 외부에서 sharedStorage.set()를 호출합니다. 워크릿 외부에서 호출되면 호출이 이루어진 탐색 컨텍스트의 출처에 데이터가 기록됩니다. worklet 내부에서 호출되면 데이터가 worklet을 로드한 탐색 컨텍스트의 출처에 기록됩니다. 설정된 키의 만료일은 마지막 업데이트로부터 30일입니다.
ignoreIfPresent 필드는 선택사항입니다. 이 값이 있고 true로 설정된 경우 키가 이미 있으면 업데이트되지 않습니다. 키가 업데이트되지 않더라도 키 만료가 set() 호출로부터 30일로 갱신됩니다.
동일한 페이지 로드에서 동일한 키로 공유 스토리지에 여러 번 액세스하면 키의 값이 덮어쓰여집니다. 키가 이전 값을 유지해야 하는 경우 sharedStorage.append()를 사용하는 것이 좋습니다.
JavaScript 사용
worklet 외부:
window.sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true }); // Shared Storage: {'myKey': 'myValue1'} window.sharedStorage.set('myKey', 'myValue2', { ignoreIfPresent: true }); // Shared Storage: {'myKey': 'myValue1'} window.sharedStorage.set('myKey', 'myValue2', { ignoreIfPresent: false }); // Shared Storage: {'myKey': 'myValue2'}마찬가지로 worklet 내부에서는 다음을 실행합니다.
sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true });응답 헤더 사용
응답 헤더를 사용하여 공유 스토리지에 쓸 수도 있습니다. 이렇게 하려면 다음 명령어와 함께 응답 헤더에
Shared-Storage-Write를 사용하세요.Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_presentShared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present=?0여러 항목을 쉼표로 구분할 수 있으며
set,append,delete,clear를 결합할 수 있습니다.Shared-Storage-Write : set;key="hello";value="world";ignore_if_present, set;key="good";value="bye"
값 추가
append 메서드를 사용하여 기존 키에 값을 추가할 수 있습니다. 키가 존재하지 않으면 append()를 호출하면 키가 생성되고 값이 설정됩니다. 이 작업은 JavaScript 또는 응답 헤더를 사용하여 수행할 수 있습니다.
JavaScript 사용
기존 키의 값을 업데이트하려면 워크릿 내부 또는 외부에서
sharedStorage.append()를 사용합니다.window.sharedStorage.append('myKey', 'myValue1'); // Shared Storage: {'myKey': 'myValue1'} window.sharedStorage.append('myKey', 'myValue2'); // Shared Storage: {'myKey': 'myValue1myValue2'} window.sharedStorage.append('anotherKey', 'hello'); // Shared Storage: {'myKey': 'myValue1myValue2', 'anotherKey': 'hello'}worklet 내에서 추가하려면 다음을 실행하세요.
sharedStorage.append('myKey', 'myValue1');응답 헤더 사용
공유 저장소에서 값을 설정하는 것과 마찬가지로 응답 헤더에서
Shared-Storage-Write를 사용하여 키-값 쌍을 전달할 수 있습니다.Shared-Storage-Write : append;key="myKey";value="myValue2"
값 일괄 업데이트
JavaScript worklet 내부 또는 외부에서 sharedStorage.batchUpdate()를 호출하고 선택한 작업을 지정하는 정렬된 메서드 배열을 전달할 수 있습니다. 각 메서드 생성자는 set, append, delete, clear의 해당 개별 메서드와 동일한 매개변수를 허용합니다.
JavaScript에서 batchUpdate()를 호출하거나 응답 헤더를 사용할 수 있습니다.
JavaScript 사용
batchUpdate()와 함께 사용할 수 있는 JavaScript 메서드는 다음과 같습니다.SharedStorageSetMethod(): 키-값 쌍을 공유 스토리지에 씁니다.SharedStorageAppendMethod(): 값을 공유 스토리지의 기존 키에 추가하거나 키가 아직 없는 경우 키-값 쌍을 씁니다.SharedStorageDeleteMethod(): 공유 스토리지에서 키-값 쌍을 삭제합니다.SharedStorageClearMethod(): 공유 스토리지의 모든 키를 삭제합니다.
sharedStorage.batchUpdate([ new SharedStorageSetMethod('keyOne', 'valueOne'), new SharedStorageAppendMethod('keyTwo', 'valueTwo'), new SharedStorageDeleteMethod('keyThree'), new SharedStorageClearMethod() ]);응답 헤더 사용
Shared-Storage-Write : set;key=keyOne;value=valueOne, append;key=keyTwo;value=valueTwo,delete;key=keyThree,clear
응답 헤더를 사용하면 헤더의 모든 메서드에 대해 batchUpdate()가 실행됩니다.
공유 스토리지에서 읽기
워크릿 내에서만 Shared Storage를 읽을 수 있습니다.
await sharedStorage.get('mykey');
worklet 모듈이 로드된 브라우징 컨텍스트의 출처에 따라 읽을 공유 스토리지가 결정됩니다.
공유 스토리지에서 삭제
worklet 내부 또는 외부에서 JavaScript를 사용하거나 delete()와 함께 응답 헤더를 사용하여 공유 스토리지에서 삭제를 실행할 수 있습니다. 한 번에 모든 키를 삭제하려면 둘 중 하나의 clear()를 사용합니다.
JavaScript 사용
worklet 외부에서 Shared Storage를 삭제하려면 다음을 실행하세요.
window.sharedStorage.delete('myKey');worklet 내부에서 Shared Storage를 삭제하려면 다음을 실행하세요.
sharedStorage.delete('myKey');작업 단위 외부에서 모든 키를 한 번에 삭제하려면 다음을 실행하세요.
window.sharedStorage.clear();worklet 내부에서 모든 키를 한 번에 삭제하려면 다음을 실행하세요.
sharedStorage.clear();응답 헤더 사용
응답 헤더를 사용하여 값을 삭제하려면 응답 헤더에서
Shared-Storage-Write를 사용하여 삭제할 키를 전달할 수도 있습니다.delete;key="myKey"응답 헤더를 사용하여 모든 키를 삭제하려면 다음을 실행하세요.
clear;
공유 저장소에서 Protected Audience 관심분야 그룹 읽기
공유 스토리지 워크릿에서 Protected Audience의 관심분야 그룹을 읽을 수 있습니다. interestGroups() 메서드는 AuctionInterestGroup 및 GenerateBidInterestGroup 속성을 포함한 StorageInterestGroup 객체의 배열을 반환합니다.
다음 예에서는 탐색 컨텍스트 관심분류를 읽는 방법과 검색된 관심분류에서 실행할 수 있는 몇 가지 작업을 보여줍니다. 사용되는 두 가지 가능한 작업은 관심분야 그룹 수 찾기와 입찰 수가 가장 많은 관심분야 그룹 찾기입니다.
async function analyzeInterestGroups() {
const interestGroups = await interestGroups();
numIGs = interestGroups.length;
maxBidCountIG = interestGroups.reduce((max, cur) => { return cur.bidCount > max.bidCount ? cur : max; }, interestGroups[0]);
console.log("The IG that bid the most has name " + maxBidCountIG.name);
}
worklet 모듈이 로드된 브라우징 컨텍스트의 출처에 따라 기본적으로 읽히는 관심분류의 출처가 결정됩니다. 기본 워크릿 출처와 이를 변경하는 방법을 자세히 알아보려면 Shared Storage API 둘러보기의 공유 저장소 및 Private Aggregation 실행 섹션을 검토하세요.
옵션
모든 공유 스토리지 수정자 메서드는 마지막 인수로 선택적 옵션 객체를 지원합니다.
withLock
withLock 옵션은 선택사항입니다. 지정된 경우 이 옵션은 메서드가 진행되기 전에 Web Locks API를 사용하여 정의된 리소스의 잠금을 획득하도록 지시합니다. 잠금을 요청할 때 잠금 이름이 전달됩니다. 이름은 출처 내 여러 탭,작업자 또는 코드에서 사용이 조정되는 리소스를 나타냅니다.
withLock 옵션은 다음 공유 스토리지 수정자 메서드와 함께 사용할 수 있습니다.
- set
- append
- delete
- 지우기
- 일괄 업데이트
JavaScript 또는 응답 헤더를 사용하여 잠금을 설정할 수 있습니다.
JavaScript 사용
sharedStorage.set('myKey', 'myValue', { withLock: 'myResource' });응답 헤더 사용
Shared-Storage-Write : set;key="myKey";value="myValue",options;with_lock="myResource"
공유 스토리지 잠금은 데이터 출처별로 파티셔닝됩니다. 잠금은 window 또는 worker 컨텍스트에 있는지와 관계없이 LockManager request() 메서드를 사용하여 획득한 잠금과 독립적입니다. 하지만 SharedStorageWorklet 컨텍스트 내에서 request()를 사용하여 획득한 잠금과 동일한 범위를 공유합니다.
request() 메서드를 사용하면 다양한 구성 옵션을 사용할 수 있지만 공유 스토리지 내에서 획득한 잠금은 항상 다음 기본 설정을 따릅니다.
mode: "exclusive": 동일한 이름의 다른 잠금을 동시에 보유할 수 없습니다.steal: false: 다른 요청을 수용하기 위해 동일한 이름의 기존 잠금이 해제되지 않습니다.ifAvailable: false: 잠금을 사용할 수 있을 때까지 요청이 무한정 대기합니다.
withLock 사용 시점
잠금은 동시에 실행되는 워크릿이 여러 개 (예: 페이지에 워크릿이 여러 개 있거나 서로 다른 탭에 워크릿이 여러 개 있음) 있고 각 워크릿이 동일한 데이터를 확인하는 시나리오에서 유용합니다. 이 시나리오에서는 한 번에 하나의 워크릿만 보고서를 처리하도록 관련 워크릿 코드를 잠금으로 래핑하는 것이 좋습니다.
잠금이 유용한 또 다른 상황은 워크릿에서 함께 읽어야 하는 키가 여러 개 있고 상태가 동기화되어야 하는 경우입니다. 이 경우 get 호출을 잠금으로 래핑하고 이러한 키에 쓸 때 동일한 잠금을 획득해야 합니다.
잠금 순서
웹 잠금의 특성상 수정자 메서드가 정의된 순서대로 실행되지 않을 수 있습니다. 첫 번째 작업에 잠금이 필요하고 지연되는 경우 첫 번째 작업이 완료되기 전에 두 번째 작업이 시작될 수 있습니다.
예를 들어 다음과 같습니다.
// This line might pause until the lock is available.
sharedStorage.set('keyOne', 'valueOne', { withLock: 'resource-lock' });
// This line will run right away, even if the first one is still waiting.
sharedStorage.set('keyOne', 'valueTwo');
여러 키 수정 예
batchUpdate()이 있는 withLock 옵션은 동일한 잠금을 획득하는 다른 동시 작업과의 상호 배제를 보장합니다. batchUpdate()의 withLock 옵션은 전체 배치에만 적용할 수 있습니다. 일괄 처리 내의 개별 메서드 객체에 withLock를 적용하면 예외가 발생합니다.
이 예에서는 잠금을 사용하여 워크릿 내의 읽기 및 삭제 작업이 함께 발생하도록 하여 워크릿 외부의 간섭을 방지합니다.
다음 modify-multiple-keys.js 예시에서는 modify-lock로 keyOne 및 keyTwo의 새 값을 설정한 다음 워크릿에서 modify-multiple-keys 작업을 실행합니다.
// modify-multiple-keys.js
sharedStorage.batchUpdate([
new SharedStorageSetMethod('keyOne', calculateValueFor('keyOne')),
new SharedStorageSetMethod('keyTwo', calculateValueFor('keyTwo'))
], { withLock: 'modify-lock' });
const modifyWorklet = await sharedStorage.createWorklet('modify-multiple-keys-worklet.js');
await modifyWorklet.run('modify-multiple-keys');
그런 다음 modify-multiple-keys-worklet.js 내에서 navigator.locks.request()를 사용하여 잠금을 요청하여 필요에 따라 키를 읽고 수정할 수 있습니다.
// modify-multiple-keys-worklet.js
class ModifyMultipleKeysOperation {
async run(data) {
await navigator.locks.request('modify-lock', async (lock) => {
const value1 = await sharedStorage.get('keyOne');
const value2 = await sharedStorage.get('keyTwo');
// Do something with `value1` and `value2` here.
await sharedStorage.delete('keyOne');
await sharedStorage.delete('keyTwo');
});
}
}
register('modify-multiple-keys', ModifyMultipleKeysOperation);
컨텍스트 전환
공유 저장소 데이터는 호출이 시작된 브라우징 컨텍스트의 출처(예: https://example.adtech.com)에 기록됩니다.
<script> 태그를 사용하여 서드 파티 코드를 로드하면 코드가 삽입자의 탐색 컨텍스트에서 실행됩니다. 따라서 서드 파티 코드가 sharedStorage.set()를 호출하면 데이터가 삽입기의 공유 저장소에 기록됩니다. iframe 내에서 서드 파티 코드를 로드하면 코드에 새 탐색 컨텍스트가 제공되고 출처는 iframe의 출처가 됩니다. 따라서 iframe에서 이루어진 sharedStorage.set() 호출은 iframe 출처의 공유 스토리지에 데이터를 저장합니다.
퍼스트 파티 컨텍스트
퍼스트 파티 페이지에 sharedStorage.set() 또는 sharedStorage.delete()를 호출하는 서드 파티 JavaScript 코드가 삽입되어 있으면 키-값 쌍이 퍼스트 파티 컨텍스트에 저장됩니다.
서드 파티 컨텍스트
키-값 쌍은 iframe을 만들고 iframe 내에서 JavaScript 코드의 set() 또는 delete()를 호출하여 광고 기술 또는 서드 파티 컨텍스트에 저장할 수 있습니다.
Private Aggregation API
Shared Storage에 저장된 집계 가능한 데이터를 측정하려면 Private Aggregation API를 사용하면 됩니다.
보고서를 만들려면 버킷과 값이 있는 워크릿 내에서 contributeToHistogram()를 호출합니다. 버킷은 부호 없는 128비트 정수로 표현되며, BigInt로 함수에 전달해야 합니다. 값은 양의 정수입니다.
개인 정보를 보호하기 위해 버킷과 값이 포함된 보고서의 페이로드는 전송 중에 암호화되며 집계 서비스를 사용해서만 복호화하고 집계할 수 있습니다.
브라우저는 사이트가 출력 쿼리에 제공할 수 있는 기여도 제한합니다. 특히 기여 예산은 모든 버킷에서 지정된 시간 범위 내에 지정된 브라우저의 단일 사이트에서 생성된 모든 보고서의 합계를 제한합니다. 현재 예산을 초과하면 보고서가 생성되지 않습니다.
privateAggregation.contributeToHistogram({
bucket: BigInt(myBucket),
value: parseInt(myBucketValue)
});
Shared Storage 및 Private Aggregation 실행
기본적으로 createWorklet()로 공유 스토리지를 사용하는 경우 데이터 파티션 출처는 워크릿 스크립트 자체의 출처가 아닌 호출 탐색 컨텍스트'의 출처가 됩니다.
기본 동작을 변경하려면 createWorklet를 호출할 때 dataOrigin 속성을 설정합니다.
dataOrigin: "context-origin": (기본값) 데이터가 호출 브라우징 컨텍스트의 출처의 공유 스토리지에 저장됩니다.dataOrigin: "script-origin": 데이터가 워클릿 스크립트 출처의 공유 스토리지에 저장됩니다. 이 모드를 사용 설정하려면 선택이 필요합니다.dataOrigin: "https://custom-data-origin.example": 데이터가 맞춤 데이터 출처의 공유 저장소에 저장됩니다. 이 모드를 사용 설정하려면 선택이 필요하며 맞춤 데이터 출처에 자세히 설명된 대로 맞춤 데이터 출처 소유자의 동의가 필요합니다.
sharedStorage.createWorklet(scriptUrl, {dataOrigin: "script-origin"});
"script-origin" 또는 맞춤 출처를 사용하는 경우 선택하려면 스크립트 엔드포인트가 Shared-Storage-Cross-Origin-Worklet-Allowed 헤더로 응답해야 합니다. 교차 출처 요청의 경우 CORS도 사용 설정해야 합니다.
Shared-Storage-Cross-Origin-Worklet-Allowed : ?1
Access-Control-Allow-Origin: *
타사 iframe을 사용하여 교차 출처 스크립트를 실행할 수도 있습니다. 이 경우 공유 스토리지 작업은 타사 탐색 컨텍스트에 있습니다.
교차 출처 iframe 사용
공유 스토리지 워크릿을 호출하려면 iframe이 필요합니다.
광고의 iframe에서 addModule()를 호출하여 워크릿 모듈을 로드합니다. sharedStorageWorklet.js worklet 파일에 등록된 메서드를 동일한 광고 iframe JavaScript에서 실행하려면 sharedStorage.run()를 호출합니다.
const sharedStorageWorklet = await window.sharedStorage.createWorklet(
'https://any-origin.example/modules/sharedStorageWorklet.js'
);
await sharedStorageWorklet.run('shared-storage-report', {
data: { campaignId: '1234' },
});
worklet 스크립트에서 비동기 run 메서드가 있는 클래스를 만들고 광고의 iframe에서 실행되도록 register해야 합니다. sharedStorageWorklet.js 내부:
class SharedStorageReportOperation {
async run(data) {
// Other code goes here.
bucket = getBucket(...);
value = getValue(...);
privateAggregation.contributeToHistogram({
bucket,
value
});
}
}
register('shared-storage-report', SharedStorageReportOperation);
교차 출처 요청 사용
Shared Storage API와 Private Aggregation API를 사용하면 교차 출처 iframe 없이 교차 출처 워크릿을 만들 수 있습니다.
퍼스트 파티 페이지는 createWorklet() 호출을 교차 출처 JavaScript 엔드포인트에 호출할 수도 있습니다. worklet을 만들 때 worklet의 데이터 파티션 출처를 스크립트 출처로 설정해야 합니다.
async function crossOriginCall() {
const privateAggregationWorklet = await sharedStorage.createWorklet(
'https://cross-origin.example/js/worklet.js',
{ dataOrigin: 'script-origin' }
);
await privateAggregationWorklet.run('pa-worklet');
}
crossOriginCall();
교차 출처 JavaScript 엔드포인트는 Shared-Storage-Cross-Origin-Worklet-Allowed 헤더로 응답하고 요청에 CORS가 사용 설정되어 있음을 알려야 합니다.
Shared-Storage-Cross-Origin-Worklet-Allowed : ?1
createWorklet()를 사용하여 생성된 워크릿에는 selectURL 및 run()가 있습니다.
이 경우 addModule()을 사용할 수 없습니다.
class CrossOriginWorklet {
async run(data){
// Other code goes here.
bucket = getBucket(...);
value = getValue(...);
privateAggregation.contributeToHistogram({
bucket,
value
});
}
}
맞춤 데이터 원본
dataOrigin이 유효한 출처로 설정된 경우 dataOrigin의 소유자는 /.well-known/shared-storage/trusted-origins 경로에 워클릿 스크립트 출처를 나열하는 JSON 파일을 호스팅하여 해당 dataOrigin의 공유 스토리지 처리에 동의해야 합니다. 파일은 scriptOrigin 및 contextOrigin 키가 있는 객체의 배열이어야 합니다. 이러한 키의 값은 문자열이거나 문자열 배열일 수 있습니다.
다음 정보를 사용하여 trusted-origins 파일을 구성합니다.
- 호출자 컨텍스트
- Worklet 스크립트 출처 및 URL
- 데이터 출처 및 소유자
다음 표는 이 정보를 기반으로 trusted-origins 파일을 구성하는 방법을 보여줍니다.
| 호출자 컨텍스트 | Worklet 스크립트 URL | 데이터 원본 | 데이터 소유자 | 데이터 출처 소유자의 신뢰할 수 있는 출처 JSON 파일 |
|---|---|---|---|---|
| https://publisher.example | https://publisher.example/script.js | context-origin | https://publisher.example | JSON이 필요하지 않음 |
| https://publisher.example | https://ad.example/script.js | script-origin | https://ad.example | JSON이 필요하지 않음 |
| https://publisher.example | https://cdn-ad.example/script.js | https://ad.example | https://ad.example |
[{ "scriptOrigin": "https://cdn-ad.example", "contextOrigin": "https://publisher.example" }] |
| 모든 발신자 | https://cdn-ad.example/script.js | https://ad.example | https://ad.example |
[{ "scriptOrigin": "https://cdn-ad.example", "contextOrigin": "*" }] |
| https://publisher-a.example 또는 https://publisher-b.example | https://cdn-ad.example/script.js | https://ad.example | https://ad.example |
[{ "scriptOrigin": "https://cdn-ad.example", "contextOrigin": [ "https://publisher-a.example", "https://publisher-b.example" ] }] |
| https://publisher.example | https://cdn-a-ad.example/script.js 또는 https://cdn-b-ad.example/script.js | https://ad.example | https://ad.example |
[{ "scriptOrigin": [ "https://cdn-a-ad.example", "https://cdn-b-ad.example" ], "contextOrigin": "https://publisher.example" }] |
예를 들어 다음 JSON은 https://custom-data-origin.example/.well-known/shared-storage/trusted-origins에서 호스팅될 수 있으며 https://custom-data-origin.example 출처의 공유 스토리지 데이터에 허용된 모든 프로세서를 결합합니다.
[
{
"scriptOrigin": "https://script-origin.a.example",
"contextOrigin": "https://context-origin.a.example"
},
{
"scriptOrigin": "https://script-origin.b.example",
"contextOrigin": [
"https://context-origin.a.example",
"https://context-origin.b.example"
]
}]
다음 단계
다음 페이지에서는 Shared Storage API와 Private Aggregation API의 중요한 측면을 설명합니다.
- 공유 스토리지 소개 (개발자 Chrome)
- 공유 스토리지 사용 사례 (개발자 Chrome)
- Private Aggregation 소개 (개발자 Chrome)
- Shared Storage 설명 (GitHub)
- Private Aggregation Explainer (GitHub)
- Shared Storage 및 Private Aggregation 데모
API에 익숙해지면 요청 본문에 JSON으로 다음 엔드포인트에 POST 요청으로 전송되는 보고서를 수집할 수 있습니다.
- 디버그 보고서 -
context-origin/.well-known/private-aggregation/debug/report-shared-storage - 보고서 -
context-origin/.well-known/private-aggregation/report-shared-storage
보고서가 수집되면 로컬 테스트 도구를 사용하여 테스트하거나 집계 서비스의 신뢰할 수 있는 실행 환경을 설정하여 집계된 보고서를 가져올 수 있습니다.
의견 공유
GitHub에서 API 및 문서에 대한 의견을 공유할 수 있습니다.