Bắt đầu nhanh việc triển khai bộ nhớ dùng chung và tính năng tổng hợp riêng tư

Tài liệu này là hướng dẫn nhanh về cách sử dụng Bộ nhớ dùng chung và tính năng Tổng hợp riêng tư. Bạn cần hiểu rõ cả hai API này vì Bộ nhớ dùng chung lưu trữ các giá trị và tính năng Tổng hợp riêng tư tạo ra các báo cáo tổng hợp.

Đối tượng mục tiêu: Các nhà cung cấp công nghệ quảng cáo và đo lường.

Shared Storage API

Để ngăn chặn việc theo dõi trên nhiều trang web, các trình duyệt đã bắt đầu phân vùng tất cả các hình thức bộ nhớ, bao gồm bộ nhớ cục bộ, cookie, v.v. Tuy nhiên, có một số trường hợp sử dụng yêu cầu bộ nhớ chưa phân vùng. Shared Storage API cung cấp quyền ghi không giới hạn trên nhiều trang web cấp cao nhất với quyền đọc bảo đảm quyền riêng tư.

Bộ nhớ dùng chung bị hạn chế ở nguồn gốc ngữ cảnh (thực thể gọi của sharedStorage).

Bộ nhớ dùng chung có giới hạn dung lượng cho mỗi nguồn gốc, trong đó mỗi mục nhập bị giới hạn ở số ký tự tối đa. Nếu đạt đến giới hạn, hệ thống sẽ không lưu trữ thêm dữ liệu đầu vào nào. Hạn mức bộ nhớ dữ liệu được nêu trong phần Giải thích về bộ nhớ dùng chung.

Gọi bộ nhớ dùng chung

Công nghệ quảng cáo có thể ghi vào Bộ nhớ dùng chung bằng JavaScript hoặc tiêu đề phản hồi. Việc đọc từ Bộ nhớ dùng chung chỉ xảy ra trong một môi trường JavaScript riêng biệt được gọi là worklet.

  • Sử dụng JavaScript Các công nghệ quảng cáo có thể thực hiện các chức năng cụ thể của Bộ nhớ dùng chung, chẳng hạn như đặt, thêm và xoá các giá trị bên ngoài một công việc JavaScript. Tuy nhiên, các hàm như đọc Bộ nhớ dùng chung và thực hiện Tổng hợp riêng tư phải được hoàn tất thông qua một worklet JavaScript. Bạn có thể tìm thấy các phương thức có thể sử dụng bên ngoài worklet JavaScript trong phần Proposed API Surface – Outside the worklet (Giao diện API đề xuất – Bên ngoài worklet).

    Bạn có thể tìm thấy các phương thức được sử dụng trong worklet trong quá trình thao tác trong phần Proposed API Surface – In the worklet (Giao diện API đề xuất – Trong worklet).

  • Sử dụng tiêu đề phản hồi

    Tương tự như JavaScript, bạn chỉ có thể thực hiện các hàm cụ thể như thiết lập, thêm và xoá giá trị trong Bộ nhớ dùng chung bằng tiêu đề phản hồi. Để làm việc với Bộ nhớ dùng chung trong tiêu đề phản hồi, bạn phải đưa Shared-Storage-Writable: ?1 vào tiêu đề yêu cầu.

    Để bắt đầu một yêu cầu từ ứng dụng, hãy chạy mã sau, tuỳ thuộc vào phương thức bạn chọn:

    • Sử dụng fetch()

      fetch("https://a.example/path/for/updates", {sharedStorageWritable: true});
      
    • Sử dụng thẻ iframe hoặc img

      <iframe src="https://a.example/path/for/updates" sharedstoragewritable></iframe>
      
    • Sử dụng thuộc tính IDL với thẻ iframe hoặc img

      let iframe = document.getElementById("my-iframe");
      iframe.sharedStorageWritable = true;
      iframe.src = "https://a.example/path/for/updates";
      

Bạn có thể xem thêm thông tin trong phần Bộ nhớ dùng chung: Tiêu đề phản hồi.

Ghi vào bộ nhớ dùng chung

Để ghi vào Bộ nhớ dùng chung, hãy gọi sharedStorage.set() từ bên trong hoặc bên ngoài một worklet JavaScript. Nếu được gọi từ bên ngoài worklet, dữ liệu sẽ được ghi vào nguồn gốc của ngữ cảnh duyệt web mà lệnh gọi được thực hiện. Nếu được gọi từ bên trong worklet, dữ liệu sẽ được ghi vào nguồn gốc của ngữ cảnh duyệt web đã tải worklet. Các khoá được đặt có ngày hết hạn là 30 ngày kể từ lần cập nhật gần nhất.

Trường ignoreIfPresent là không bắt buộc. Nếu có và được đặt thành true, khoá sẽ không được cập nhật nếu khoá đó đã tồn tại. Thời gian hết hạn của khoá được gia hạn thành 30 ngày kể từ lệnh gọi set() ngay cả khi khoá không được cập nhật.

Nếu bạn truy cập vào Bộ nhớ dùng chung nhiều lần trong cùng một lượt tải trang bằng cùng một khoá, thì giá trị của khoá đó sẽ bị ghi đè. Bạn nên sử dụng sharedStorage.append() nếu khoá cần duy trì giá trị trước đó.

  • Sử dụng JavaScript

    Bên ngoài 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'}
    

    Tương tự, bên trong worklet:

    sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true });
    
  • Sử dụng tiêu đề phản hồi

    Bạn cũng có thể ghi vào Bộ nhớ dùng chung bằng các tiêu đề phản hồi. Để thực hiện việc này, hãy sử dụng Shared-Storage-Write trong tiêu đề phản hồi cùng với các lệnh sau:

    Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present
    
    Shared-Storage-Write : set;key="myKey";value="myValue";ignore_if_present=?0
    

    Bạn có thể phân tách nhiều mục bằng dấu phẩy và có thể kết hợp set, append, deleteclear.

    Shared-Storage-Write :
    set;key="hello";value="world";ignore_if_present, set;key="good";value="bye"
    

Nối một giá trị

Bạn có thể thêm một giá trị vào khoá hiện có bằng phương thức nối. Nếu khoá không tồn tại, lệnh gọi append() sẽ tạo khoá và đặt giá trị. Bạn có thể thực hiện việc này bằng cách sử dụng JavaScript hoặc tiêu đề phản hồi.

  • Sử dụng JavaScript

    Để cập nhật giá trị của các khoá hiện có, hãy sử dụng sharedStorage.append() từ bên trong hoặc bên ngoài worklet.

    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'}
    

    Cách nối vào bên trong worklet:

    sharedStorage.append('myKey', 'myValue1');
    
  • Sử dụng tiêu đề phản hồi

    Tương tự như việc đặt giá trị trong Bộ nhớ dùng chung, bạn có thể sử dụng Shared-Storage-Write trong tiêu đề phản hồi để truyền cặp khoá-giá trị.

    Shared-Storage-Write : append;key="myKey";value="myValue2"
    

Cập nhật giá trị theo lô

Bạn có thể gọi sharedStorage.batchUpdate() từ bên trong hoặc bên ngoài một worklet JavaScript và truyền vào một mảng các phương thức được sắp xếp theo thứ tự chỉ định các thao tác đã chọn. Mỗi hàm khởi tạo phương thức chấp nhận các tham số giống như phương thức riêng tương ứng để đặt, nối, xoá và xoá sạch.

Bạn có thể đặt khoá bằng cách sử dụng JavaScript hoặc tiêu đề phản hồi:

  • Sử dụng JavaScript

    Các phương thức JavaScript hiện có có thể dùng với batchUpdate() bao gồm:

    • SharedStorageSetMethod(): Ghi một cặp khoá-giá trị vào Bộ nhớ dùng chung.
    • SharedStorageAppendMethod(): Thêm một giá trị vào khoá hiện có trong Bộ nhớ dùng chung.
    • SharedStorageDeleteMethod(): Xoá một cặp khoá-giá trị khỏi Bộ nhớ dùng chung.
    • SharedStorageClearMethod(): Xoá tất cả khoá trong Bộ nhớ dùng chung.
    sharedStorage.batchUpdate([
    new SharedStorageSetMethod('keyOne', 'valueOne'),
    new SharedStorageAppendMethod('keyTwo', 'valueTwo'),
    new SharedStorageDeleteMethod('keyThree'),
    new SharedStorageClearMethod()
    ]);
    
  • Sử dụng tiêu đề phản hồi

    Shared-Storage-Write : batchUpdate;methods="set;key=keyOne;value=valueOne, append;key=keyTwo;value=valueTwo,delete;key=keyThree,clear"
    

Đọc từ bộ nhớ dùng chung

Bạn chỉ có thể đọc từ Bộ nhớ dùng chung từ bên trong một worklet.

await sharedStorage.get('mykey');

Nguồn gốc của ngữ cảnh duyệt web mà mô-đun worklet được tải từ đó xác định Bộ nhớ dùng chung của ai được đọc.

Xoá khỏi Bộ nhớ dùng chung

Bạn có thể xoá dữ liệu khỏi Bộ nhớ dùng chung bằng JavaScript từ bên trong hoặc bên ngoài worklet hoặc bằng cách sử dụng tiêu đề phản hồi với delete(). Để xoá tất cả các khoá cùng một lúc, hãy sử dụng clear() từ một trong hai.

  • Sử dụng JavaScript

    Cách xoá khỏi Bộ nhớ dùng chung từ bên ngoài worklet:

    window.sharedStorage.delete('myKey');
    

    Cách xoá khỏi Bộ nhớ dùng chung từ bên trong worklet:

    sharedStorage.delete('myKey');
    

    Cách xoá tất cả khoá cùng một lúc từ bên ngoài worklet:

    window.sharedStorage.clear();
    

    Cách xoá tất cả khoá cùng một lúc từ bên trong worklet:

    sharedStorage.clear();
    
  • Sử dụng tiêu đề phản hồi

    Để xoá các giá trị bằng tiêu đề phản hồi, bạn cũng có thể sử dụng Shared-Storage-Write trong tiêu đề phản hồi để truyền khoá cần xoá.

    delete;key="myKey"
    

    Cách xoá tất cả khoá bằng tiêu đề phản hồi:

    clear;
    

Đọc nhóm mối quan tâm trong Protected Audience từ Bộ nhớ dùng chung

Bạn có thể đọc các nhóm mối quan tâm của Protected Audience từ một công cụ trong Bộ nhớ dùng chung. Phương thức interestGroups() trả về một mảng các đối tượng StorageInterestGroup, bao gồm các thuộc tính AuctionInterestGroupGenerateBidInterestGroup.

Ví dụ sau đây cho thấy cách đọc các nhóm mối quan tâm theo ngữ cảnh duyệt web và một số thao tác có thể thực hiện trên các nhóm mối quan tâm được truy xuất. Có hai phép toán có thể sử dụng là tìm số lượng nhóm mối quan tâm và tìm nhóm mối quan tâm có số lượng giá thầu cao nhất.

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);
}

Nguồn gốc của ngữ cảnh duyệt web mà mô-đun worklet được tải từ đó xác định nguồn gốc của các nhóm mối quan tâm đang được đọc theo mặc định. Để tìm hiểu thêm về nguồn gốc mặc định của worklet và cách thay đổi nguồn gốc đó, hãy xem lại phần Thực thi bộ nhớ dùng chung và tính năng tổng hợp riêng tư trong phần Hướng dẫn từng bước về API bộ nhớ dùng chung.

Tùy chọn

Tất cả phương thức đối tượng sửa đổi Bộ nhớ dùng chung đều hỗ trợ đối tượng tuỳ chọn không bắt buộc làm đối số cuối cùng.

withLock

Bạn không bắt buộc phải sử dụng tuỳ chọn withLock. Nếu được chỉ định, tuỳ chọn này sẽ hướng dẫn phương thức thu nạp khoá cho tài nguyên đã xác định bằng cách sử dụng Web Locks API trước khi tiếp tục. Tên khoá sẽ được truyền khi yêu cầu khoá. Tên này đại diện cho một tài nguyên có hoạt động sử dụng được điều phối trên nhiều thẻ,worker hoặc mã trong nguồn gốc.

Bạn có thể sử dụng tuỳ chọn withLock với các phương thức đối tượng sửa đổi Bộ nhớ dùng chung sau:

  • đặt
  • append
  • xóa
  • xóa
  • cập nhật theo lô

Bạn có thể đặt khoá bằng cách sử dụng JavaScript hoặc tiêu đề phản hồi:

  • Sử dụng JavaScript

    sharedStorage.set('myKey', 'myValue', { withLock: 'myResource' });
    
  • Sử dụng tiêu đề phản hồi

    Shared-Storage-Write : set;key="myKey";value="myValue";with_lock="myResource"
    

Khoá Bộ nhớ dùng chung được phân vùng theo nguồn gốc dữ liệu. Các khoá này độc lập với mọi khoá thu được bằng phương thức request() của LockManager, bất kể các khoá đó có trong ngữ cảnh window hay worker. Tuy nhiên, các khoá này có cùng phạm vi với khoá thu được bằng cách sử dụng request() trong ngữ cảnh SharedStorageWorklet.

Mặc dù phương thức request() cho phép nhiều tuỳ chọn cấu hình, nhưng các khoá thu được trong Bộ nhớ dùng chung luôn tuân thủ các chế độ cài đặt mặc định sau:

  • mode: "exclusive": Không thể giữ đồng thời khoá nào khác có cùng tên.
  • steal: false: Các khoá hiện có có cùng tên sẽ không được giải phóng để đáp ứng các yêu cầu khác.
  • ifAvailable: false: Các yêu cầu chờ vô thời hạn cho đến khi khoá có sẵn.
Trường hợp sử dụng withLock

Khoá hữu ích trong các trường hợp có thể có nhiều worklet chạy đồng thời (ví dụ: nhiều worklet trên một trang hoặc nhiều worklet trong các thẻ khác nhau), mỗi worklet đều xem cùng một dữ liệu. Trong trường hợp đó, bạn nên gói mã worklet có liên quan bằng một khoá để đảm bảo rằng mỗi thời điểm chỉ có một worklet đang xử lý báo cáo.

Một trường hợp khác mà khoá hữu ích là nếu có nhiều khoá cần được đọc cùng nhau trong một worklet và trạng thái của các khoá đó phải được đồng bộ hoá. Trong trường hợp đó, bạn nên gói các lệnh gọi get bằng một khoá và nhớ lấy cùng một khoá khi ghi vào các khoá đó.

Thứ tự khoá

Do bản chất của khoá web, các phương thức đối tượng sửa đổi có thể không thực thi theo thứ tự mà bạn đã xác định. Nếu thao tác đầu tiên yêu cầu khoá và bị trì hoãn, thì thao tác thứ hai có thể bắt đầu trước khi thao tác đầu tiên kết thúc.

Ví dụ:

// 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');
Ví dụ về việc sửa đổi nhiều khoá

Ví dụ này sử dụng một khoá để đảm bảo rằng các thao tác đọc và xoá trong worklet diễn ra cùng nhau, ngăn chặn sự can thiệp từ bên ngoài worklet.

Ví dụ modify-multiple-keys.js sau đây đặt giá trị mới cho keyOnekeyTwo bằng modify-lock, sau đó thực thi phép toán modify-multiple-keys từ công việc:

// 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');

Sau đó, trong modify-multiple-keys-worklet.js, bạn có thể yêu cầu khoá bằng navigator.locks.request() để đọc và sửa đổi các khoá nếu cần

// 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);

Chuyển đổi ngữ cảnh

Dữ liệu Bộ nhớ dùng chung được ghi vào nguồn gốc (ví dụ: https://example.adtech.com) của ngữ cảnh duyệt web mà lệnh gọi bắt nguồn.

Khi bạn tải mã của bên thứ ba bằng thẻ <script>, mã sẽ được thực thi trong ngữ cảnh duyệt web của trình nhúng. Do đó, khi mã bên thứ ba gọi sharedStorage.set(), dữ liệu sẽ được ghi vào Bộ nhớ dùng chung của trình nhúng. Khi bạn tải mã của bên thứ ba trong một iframe, mã đó sẽ nhận được một ngữ cảnh duyệt web mới và nguồn gốc của mã đó là nguồn gốc của iframe. Do đó, lệnh gọi sharedStorage.set() được thực hiện từ iframe sẽ lưu trữ dữ liệu vào Bộ nhớ dùng chung của nguồn gốc iframe.

Ngữ cảnh của bên thứ nhất

Nếu một trang của bên thứ nhất có mã JavaScript của bên thứ ba được nhúng gọi sharedStorage.set() hoặc sharedStorage.delete(), thì cặp khoá-giá trị sẽ được lưu trữ trong ngữ cảnh của bên thứ nhất.

Dữ liệu được lưu trữ trong trang của bên thứ nhất có JavaScript của bên thứ ba được nhúng.

Ngữ cảnh của bên thứ ba

Bạn có thể lưu trữ cặp khoá-giá trị trong ngữ cảnh công nghệ quảng cáo hoặc bên thứ ba bằng cách tạo một iframe và gọi set() hoặc delete() trong mã JavaScript từ trong iframe.

Dữ liệu được lưu trữ trong bối cảnh công nghệ quảng cáo hoặc bên thứ ba.

Private Aggregation API

Để đo lường dữ liệu tổng hợp được lưu trữ trong Bộ nhớ dùng chung, bạn có thể sử dụng API Tổng hợp riêng tư.

Để tạo báo cáo, hãy gọi contributeToHistogram() bên trong một worklet có một bộ chứa và giá trị. Bộ chứa được biểu thị bằng một số nguyên 128 bit không dấu, phải được truyền vào hàm dưới dạng BigInt. Giá trị là một số nguyên dương.

Để bảo vệ quyền riêng tư, trọng tải của báo cáo (chứa bộ chứa và giá trị) sẽ được mã hoá trong quá trình truyền và chỉ có thể được giải mã và tổng hợp bằng Dịch vụ tổng hợp.

Trình duyệt cũng sẽ giới hạn nội dung đóng góp mà một trang web có thể đưa vào truy vấn đầu ra. Cụ thể, ngân sách đóng góp giới hạn tổng số tất cả báo cáo từ một trang web cho một trình duyệt nhất định trong một khoảng thời gian nhất định trên tất cả các bộ chứa. Nếu vượt quá ngân sách hiện tại, hệ thống sẽ không tạo báo cáo.

privateAggregation.contributeToHistogram({
  bucket: BigInt(myBucket),
  value: parseInt(myBucketValue)
});

Thực thi Bộ nhớ dùng chung và tính năng Tổng hợp riêng tư

Bạn phải tạo một worklet để truy cập dữ liệu từ bộ nhớ dùng chung. Để thực hiện việc này, hãy gọi createWorklet() bằng URL của công việc. Theo mặc định, khi sử dụng bộ nhớ dùng chung với createWorklet(), nguồn phân vùng dữ liệu sẽ là nguồn gọi của ngữ cảnh duyệt web, chứ không phải nguồn của chính tập lệnh worklet.

Để thay đổi hành vi mặc định, hãy đặt thuộc tính dataOrigin khi gọi createWorklet.

  • dataOrigin: "context-origin": (Mặc định) Dữ liệu được lưu trữ trong bộ nhớ dùng chung của nguồn gốc ngữ cảnh duyệt web gọi.
  • dataOrigin: "script-origin": Dữ liệu được lưu trữ trong bộ nhớ dùng chung của nguồn gốc tập lệnh worklet. Xin lưu ý rằng bạn phải chọn sử dụng thì mới có thể bật chế độ này.
sharedStorage.createWorklet(scriptUrl, {dataOrigin: "script-origin"});

Để chọn sử dụng, khi sử dụng "script-origin", điểm cuối tập lệnh sẽ phải phản hồi bằng tiêu đề Shared-Storage-Cross-Origin-Worklet-Allowed. Xin lưu ý rằng bạn phải bật CORS cho các yêu cầu trên nhiều nguồn gốc.

Shared-Storage-Cross-Origin-Worklet-Allowed : ?1

Sử dụng iframe trên nhiều nguồn gốc

Bạn cần có iframe để gọi worklet bộ nhớ dùng chung.

Trong iframe của quảng cáo, hãy tải mô-đun worklet bằng cách gọi addModule(). Để chạy phương thức được đăng ký trong tệp worklet sharedStorageWorklet.js, trong cùng một JavaScript iframe quảng cáo, hãy gọi sharedStorage.run().

const sharedStorageWorklet = await window.sharedStorage.createWorklet(
  'https://any-origin.example/modules/sharedStorageWorklet.js'
);
await sharedStorageWorklet.run('shared-storage-report', {
  data: { campaignId: '1234' },
});

Trong tập lệnh worklet, bạn cần tạo một lớp có phương thức run không đồng bộ và register để chạy trong iframe của quảng cáo. Bên trong sharedStorageWorklet.js:

class SharedStorageReportOperation {
  async run(data) {
    // Other code goes here.
    bucket = getBucket(...);
    value = getValue(...);
    privateAggregation.contributeToHistogram({
      bucket,
      value
    });
  }
}
register('shared-storage-report', SharedStorageReportOperation);

Sử dụng yêu cầu trên nhiều nguồn gốc

Bộ nhớ dùng chung và tính năng Tổng hợp riêng tư cho phép tạo các worklet trên nhiều nguồn gốc mà không cần iframe trên nhiều nguồn gốc.

Trang của bên thứ nhất cũng có thể gọi lệnh gọi createWorklet() đến điểm cuối javascript nhiều nguồn gốc. Bạn sẽ cần đặt nguồn gốc phân vùng dữ liệu của worklet thành nguồn gốc tập lệnh khi tạo 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();

Điểm cuối javascript nhiều nguồn gốc sẽ phải phản hồi bằng các tiêu đề Shared-Storage-Cross-Origin-Worklet-Allowed và lưu ý rằng CORS được bật cho yêu cầu.

Shared-Storage-Cross-Origin-Worklet-Allowed : ?1

Các công việc được tạo bằng createWorklet() sẽ có selectURLrun(). addModule() không dùng được cho việc này.

class CrossOriginWorklet {
  async run(data){
    // Other code goes here.
    bucket = getBucket(...);
    value = getValue(...);
    privateAggregation.contributeToHistogram({
      bucket,
      value
    });
  }
}

Các bước tiếp theo

Các trang sau đây giải thích các khía cạnh quan trọng của API Lưu trữ dùng chung và API Tổng hợp riêng tư.

Sau khi làm quen với các API, bạn có thể bắt đầu thu thập báo cáo. Báo cáo được gửi dưới dạng yêu cầu POST đến các điểm cuối sau dưới dạng JSON trong phần nội dung yêu cầu.

  • Báo cáo gỡ lỗi – context-origin/.well-known/private-aggregation/debug/report-shared-storage
  • Báo cáo – context-origin/.well-known/private-aggregation/report-shared-storage

Sau khi báo cáo được thu thập, bạn có thể kiểm thử bằng công cụ kiểm thử cục bộ hoặc thiết lập Môi trường thực thi đáng tin cậy cho Dịch vụ tổng hợp để nhận báo cáo tổng hợp.

Chia sẻ ý kiến phản hồi của bạn

Bạn có thể chia sẻ ý kiến phản hồi về các API và tài liệu trên GitHub.