Paylaşılan Depolama Alanı ve Özel Toplama Uygulaması için Hızlı Başlangıç Kılavuzu

Bu belge, Shared Storage ve Private Aggregation'ı kullanmaya başlamak için hızlı başlangıç kılavuzudur. Shared Storage değerleri sakladığı, Private Aggregation ise toplu raporlar oluşturduğu için her iki API'yi de anlamanız gerekir.

Hedef kitle: Reklam teknolojisi ve ölçüm sağlayıcılar.

Shared Storage API

Tarayıcılar, siteler arası izlemeyi önlemek için yerel depolama alanı ve çerezler de dahil olmak üzere tüm depolama biçimlerini bölümlendirmeye başladı. Ancak, bölüm oluşturulmamış depolama alanının gerekli olduğu kullanım alanları vardır. Shared Storage API, gizliliği korumaya yönelik okuma erişiminin yanı sıra farklı üst düzey sitelerde sınırsız yazma erişimi sağlar.

Paylaşılan depolama alanı, bağlam kaynağıyla (sharedStorage işlevini çağıran) sınırlıdır.

Paylaşılan depolama alanında kaynak başına kapasite sınırı vardır ve her giriş, maksimum karakter sayısıyla sınırlıdır. Sınıra ulaşıldığında başka girişler depolanmaz. Veri depolama alanı sınırları, Paylaşılan Depolama Alanı açıklayıcı belgesinde belirtilmiştir.

Shared Storage'ı çağırma

Reklam teknolojileri, JavaScript veya bir yanıt başlığı kullanarak Shared Storage'a yazabilir. Ortak Depolama'dan okuma işlemi yalnızca iş akışı adı verilen yalıtılmış bir JavaScript ortamında gerçekleşir.

  • JavaScript kullanma Reklam teknolojisi sağlayıcılar, JavaScript işleti dışındaki değerleri ayarlama, ekleme ve silme gibi belirli Shared Storage işlevlerini gerçekleştirebilir. Ancak Shared Storage'ı okuma ve Private Aggregation gerçekleştirme gibi işlevlerin bir JavaScript worklet'i aracılığıyla tamamlanması gerekir. JavaScript işleti dışında kullanılabilen yöntemleri Proposed API Surface - Outside the worklet (Önerilen API Yüzeyi - İşletin Dışında) bölümünde bulabilirsiniz.

    Bir işlem sırasında iş biriminde kullanılan yöntemleri Proposed API Surface - In the worklet (Önerilen API Yüzeyi - İş biriminde) bölümünde bulabilirsiniz.

  • Yanıt başlıklarını kullanma

    JavaScript'e benzer şekilde, yalnızca belirli işlevler (ör. değerleri Shared Storage'da ayarlama, ekleme ve silme) yanıt başlıkları kullanılarak yapılabilir. Yanıt başlığında Ortak Depolama ile çalışmak için istek başlığına Shared-Storage-Writable: ?1 eklenmelidir.

    İstemciden istek başlatmak için seçtiğiniz yönteme bağlı olarak aşağıdaki kodu çalıştırın:

    • fetch() kullanılıyor

      fetch("https://a.example/path/for/updates", {sharedStorageWritable: true});
      
    • iframe veya img etiketi kullanma

      <iframe src="https://a.example/path/for/updates" sharedstoragewritable></iframe>
      
    • iframe veya img etiketiyle IDL özelliği kullanma

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

Daha fazla bilgiyi Shared Storage: Response Headers (Paylaşılan Depolama: Yanıt Başlıkları) başlıklı makalede bulabilirsiniz.

Shared Storage'a yazma

Paylaşılan depolama alanına yazmak için bir JavaScript işleti içinden veya dışından sharedStorage.set() işlevini çağırın. İşletin dışından çağrılırsa veriler, çağrının yapıldığı göz atma bağlamının kaynağına yazılır. İşletten çağrılırsa veriler, işleti yükleyen göz atma bağlamının kaynağına yazılır. Ayarlanan anahtarların son güncellemeden itibaren 30 gün geçerlilik süresi vardır.

ignoreIfPresent alanı isteğe bağlıdır. Bu öğe varsa ve true olarak ayarlanmışsa anahtar zaten mevcutsa güncellenmez. Anahtar güncellenmemiş olsa bile anahtarın geçerlilik süresi, set() çağrısından itibaren 30 gün olarak yenilenir.

Paylaşılan depolama alanına aynı anahtarla aynı sayfa yüklemesinde birden fazla kez erişilirse anahtarın değeri üzerine yazılır. Anahtarın önceki değeri koruması gerekiyorsa sharedStorage.append() kullanmanız önerilir.

  • JavaScript kullanma

    Küçük pencerenin dışında:

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

    Benzer şekilde, iş öğesinin içinde:

    sharedStorage.set('myKey', 'myValue1', { ignoreIfPresent: true });
    
  • Yanıt başlıklarını kullanma

    Ayrıca yanıt başlıklarını kullanarak da Paylaşılan Depolama Alanı'na yazabilirsiniz. Bunu yapmak için yanıt üstbilgisinde Shared-Storage-Write ile birlikte aşağıdaki komutları kullanın:

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

    Birden fazla öğe virgülle ayrılabilir ve set, append, delete ve clear birleştirilebilir.

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

Değer ekleme

Ekleme yöntemini kullanarak mevcut bir anahtara değer ekleyebilirsiniz. Anahtar yoksa append() çağrısı anahtarı oluşturur ve değeri ayarlar. Bu işlem JavaScript veya yanıt başlığı kullanılarak yapılabilir.

  • JavaScript kullanma

    Mevcut anahtarların değerlerini güncellemek için işlevletin içinden veya dışından sharedStorage.append() simgesini kullanın.

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

    İşletim biriminin içine eklemek için:

    sharedStorage.append('myKey', 'myValue1');
    
  • Yanıt başlıklarını kullanma

    Paylaşılan Depolama Alanı'nda değer ayarlamaya benzer şekilde, anahtar/değer çiftini iletmek için yanıt üstbilgisinde Shared-Storage-Write kullanabilirsiniz.

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

Değerleri toplu olarak güncelleme

sharedStorage.batchUpdate() işlevini bir JavaScript işleti içinde veya dışında çağırabilir ve seçilen işlemleri belirten sıralı bir yöntem dizisi iletebilirsiniz. Her yöntem oluşturucu, ayarlama, ekleme, silme ve temizleme için ilgili bağımsız yöntemle aynı parametreleri kabul eder.

JavaScript'ten batchUpdate() işlevini çağırabilir veya bir yanıt başlığı kullanabilirsiniz:

  • JavaScript kullanma

    batchUpdate() ile kullanılabilecek JavaScript yöntemleri şunlardır:

    • SharedStorageSetMethod(): Shared Storage'a bir anahtar/değer çifti yazar.
    • SharedStorageAppendMethod(): Paylaşılan depolamadaki mevcut bir anahtara değer ekler veya anahtar henüz mevcut değilse bir anahtar/değer çifti yazar.
    • SharedStorageDeleteMethod(): Paylaşılan depolama alanından bir anahtar/değer çiftini siler.
    • SharedStorageClearMethod(): Paylaşılan depolama alanındaki tüm anahtarları temizler.
    sharedStorage.batchUpdate([
    new SharedStorageSetMethod('keyOne', 'valueOne'),
    new SharedStorageAppendMethod('keyTwo', 'valueTwo'),
    new SharedStorageDeleteMethod('keyThree'),
    new SharedStorageClearMethod()
    ]);
    
  • Yanıt başlıklarını kullanma

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

Yanıt üstbilgileri kullanıldığında, üstbilgideki tüm yöntemler için batchUpdate() işlemi gerçekleştirilir.

Shared Storage'dan okuma

Ortak Depolama'dan yalnızca bir iş akışı içinden okuma yapabilirsiniz.

await sharedStorage.get('mykey');

İş akışı modülünün yüklendiği göz atma bağlamının kaynağı, hangi Shared Storage'ın okunacağını belirler.

Shared Storage'dan silme

İşletin içinden veya dışından JavaScript kullanarak ya da delete() ile yanıt başlıklarını kullanarak Paylaşılan Depolama Alanı'ndan silme işlemleri gerçekleştirebilirsiniz. Tüm anahtarları aynı anda silmek için her ikisinden de clear() simgesini kullanın.

  • JavaScript kullanma

    İş akışının dışından Ortak Depolama'dan silmek için:

    window.sharedStorage.delete('myKey');
    

    İş akışının içinden Ortak Depolama'dan silmek için:

    sharedStorage.delete('myKey');
    

    Tüm anahtarları tek seferde işlevletin dışından silmek için:

    window.sharedStorage.clear();
    

    Tüm anahtarları tek seferde işlev biriminin içinden silmek için:

    sharedStorage.clear();
    
  • Yanıt başlıklarını kullanma

    Yanıt üstbilgilerini kullanarak değerleri silmek için, silinecek anahtarı iletmek üzere yanıt üstbilgisinde Shared-Storage-Write öğesini de kullanabilirsiniz.

    delete;key="myKey"
    

    Yanıt üstbilgilerini kullanarak tüm anahtarları silmek için:

    clear;
    

Protected Audience ilgi gruplarını paylaşılan depolama alanından okuma

Protected Audience'ın ilgi gruplarını Shared Storage işletiğinden okuyabilirsiniz. interestGroups() yöntemi, AuctionInterestGroup ve GenerateBidInterestGroup özelliklerini içeren bir StorageInterestGroup nesneleri dizisi döndürür.

Aşağıdaki örnekte, göz atma bağlamı ilgi gruplarının nasıl okunacağı ve alınan ilgi gruplarında yapılabilecek bazı olası işlemler gösterilmektedir. Kullanılan iki olası işlem, ilgi alanı gruplarının sayısını bulma ve en yüksek teklif sayısına sahip ilgi alanı grubunu bulmadır.

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 modülünün yüklendiği göz atma bağlamının kaynağı, varsayılan olarak okunan ilgi alanları gruplarının kaynağını belirler. Varsayılan iş parçacığı kaynağı ve bunu değiştirme hakkında daha fazla bilgi edinmek için Shared Storage API'ye Genel Bakış bölümündeki Shared Storage ve Private Aggregation'ı Çalıştırma başlıklı makaleyi inceleyin.

Seçenekler

Tüm Shared Storage değiştirici yöntemleri, son bağımsız değişken olarak isteğe bağlı bir seçenekler nesnesini destekler.

withLock

withLock seçeneği isteğe bağlıdır. Belirtilirse bu seçenek, tanımlanan kaynak için Web Locks API kullanılarak kilit alınmasını ve ardından işleme devam edilmesini sağlar. Kilit istenirken bir kilit adı iletilir. Ad, kullanımının kaynak içindeki birden fazla sekme, çalışan veya kod arasında koordine edildiği bir kaynağı temsil eder.

withLock seçeneği aşağıdaki Shared Storage değiştirici yöntemleriyle kullanılabilir:

  • grup
  • ekleme
  • delete
  • temizle
  • toplu güncelleme

JavaScript veya yanıt başlığı kullanarak kilidi ayarlayabilirsiniz:

  • JavaScript kullanma

    sharedStorage.set('myKey', 'myValue', { withLock: 'myResource' });
    
  • Yanıt başlıklarını kullanma

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

Paylaşılan depolama alanındaki kilitler, verilerin kaynağına göre bölümlendirilir. Kilitler, window veya worker bağlamında olup olmadıklarına bakılmaksızın LockManager request() yöntemi kullanılarak elde edilen kilitlerden bağımsızdır. Bununla birlikte, SharedStorageWorklet bağlamında request() kullanılarak elde edilen kilitlerle aynı kapsamı paylaşırlar.

request() yöntemi çeşitli yapılandırma seçeneklerine izin verse de Paylaşılan Depolama Alanı'nda edinilen kilitler her zaman aşağıdaki varsayılan ayarlara uyar:

  • mode: "exclusive": Aynı ada sahip başka kilitler aynı anda tutulamaz.
  • steal: false: Aynı ada sahip mevcut kilitler, diğer istekleri karşılamak için serbest bırakılmaz.
  • ifAvailable: false: İstekler, kilit kullanılabilir hale gelene kadar süresiz olarak bekler.
withLock ne zaman kullanılır?

Kilitler, aynı anda birden fazla iş öğesinin çalıştığı senaryolarda (ör.bir sayfada birden fazla iş öğesi veya farklı sekmelerde birden fazla iş öğesi) faydalıdır. Bu iş öğelerinin her biri aynı verilere bakar. Bu senaryoda, yalnızca bir iş parçacığının raporları işlemesini sağlamak için ilgili iş parçacığı kodunu bir kilitle sarmak iyi bir fikirdir.

Kilitlerin faydalı olduğu bir diğer durum da bir işlette birlikte okunması gereken birden fazla anahtarın olması ve durumlarının senkronize edilmesi gerektiğidir. Bu durumda, get çağrıları bir kilit ile sarmalanmalı ve bu anahtarlara yazarken aynı kilidin alındığından emin olunmalıdır.

Kilitlerin sırası

Web kilitlerinin yapısı nedeniyle, değiştirici yöntemler tanımladığınız sırada yürütülmeyebilir. İlk işlem için kilit gerekirse ve bu işlem gecikirse ikinci işlem, ilk işlem tamamlanmadan başlayabilir.

Örnek:

// 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');
Birden çok anahtarı değiştirme örneği

withLock seçeneğiyle batchUpdate(), aynı kilidi alan diğer eşzamanlı işlemlerle karşılıklı hariç tutmayı sağlar. batchUpdate() için yalnızca withLock seçeneğini tüm toplu işe uygulayabilirsiniz. Toplu işlemdeki herhangi bir yöntem nesnesine withLock uygulanması istisna hatası verir.

Bu örnekte, iş birimindeki okuma ve silme işlemlerinin birlikte gerçekleşmesini sağlamak için bir kilit kullanılır. Böylece, iş biriminin dışından müdahale önlenir.

Aşağıdaki modify-multiple-keys.js örneğinde, keyOne ve keyTwo için modify-lock ile yeni değerler ayarlanır, ardından iş biriminden modify-multiple-keys işlemi yürütülür:

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

Ardından, modify-multiple-keys-worklet.js içinde navigator.locks.request() kullanarak gerektiği gibi anahtarları okumak ve değiştirmek için kilidi isteyebilirsiniz.

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

Bağlam değiştirme

Shared Storage verileri, çağrının başlatıldığı göz atma bağlamının kaynağına (ör. https://example.adtech.com) yazılır.

Üçüncü taraf kodunu bir <script> etiketi kullanarak yüklediğinizde kod, yerleştiricinin göz atma bağlamında yürütülür. Bu nedenle, üçüncü taraf kodu sharedStorage.set() işlevini çağırdığında veriler yerleştiricinin SharedStorage'ına yazılır. Üçüncü taraf kodunu bir iframe içinde yüklediğinizde kod yeni bir göz atma bağlamı alır ve kaynağı, iframe'in kaynağı olur. Bu nedenle, iframe'den yapılan sharedStorage.set() çağrısı, verileri iframe kaynağının paylaşılan depolama alanına depolar.

Birinci taraf bağlamı

Birinci taraf sayfasında sharedStorage.set() veya sharedStorage.delete() işlevini çağıran yerleştirilmiş üçüncü taraf JavaScript kodu varsa anahtar/değer çifti birinci taraf bağlamında depolanır.

Yerleştirilmiş üçüncü taraf JavaScript&#39;i içeren bir birinci taraf sayfasında depolanan veriler.
Şemada, yerleştirilmiş üçüncü taraf JavaScript'i içeren bir birinci taraf sayfasında depolanan veriler gösterilmektedir.

Üçüncü taraf bağlamı

Anahtar/değer çifti, bir iFrame oluşturup iFrame'in içindeki JavaScript kodunda set() veya delete() çağrıları yapılarak reklam teknolojisi ya da üçüncü taraf bağlamında saklanabilir.

Reklam teknolojisi veya üçüncü taraf bağlamında depolanan veriler.
Şemada, bir reklam teknolojisi veya üçüncü taraf bağlamında depolanan veriler gösterilmektedir.

Private Aggregation API

Shared Storage'da depolanan toplanabilir verileri ölçmek için Private Aggregation API'yi kullanabilirsiniz.

Rapor oluşturmak için bir paketi ve değeri olan bir işlev içinde contributeToHistogram() işlevini çağırın. Grup, işleve BigInt olarak iletilmesi gereken 128 bitlik işaretsiz bir tam sayıyla gösterilir. Değer, pozitif bir tam sayıdır.

Gizliliği korumak için, raporun paketinde bulunan grup ve değer, aktarım sırasında şifrelenir ve yalnızca Toplama Hizmeti kullanılarak şifresi çözülüp toplanabilir.

Tarayıcı, bir sitenin çıkış sorgusuna yapabileceği katkıları da sınırlar. Daha net bir ifadeyle, katkı bütçesi, belirli bir tarayıcı için tek bir siteden gelen tüm raporların toplamını, tüm gruplarda belirli bir zaman aralığında sınırlar. Mevcut bütçe aşılırsa rapor oluşturulmaz.

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

Shared Storage ve Private Aggregation'ı yürütme

Varsayılan olarak, createWorklet() ile ortak depolama alanı kullanılırken veri bölümü kaynağı, işlev çağrısı yapan göz atma bağlamının kaynağı olur. İşletçik komut dosyası kaynağı olmaz.

Varsayılan davranışı değiştirmek için dataOrigin özelliğini createWorklet çağrılırken ayarlayın.

  • dataOrigin: "context-origin": (Varsayılan) Veriler, çağıran tarama bağlamının kaynağının paylaşılan depolama alanında saklanır.
  • dataOrigin: "script-origin": Veriler, işlevlet komut dosyasının kaynağının paylaşılan depolama alanında saklanır. Bu modu etkinleştirmek için kabul etmeniz gerekir.
  • dataOrigin: "https://custom-data-origin.example": Veriler, özel bir veri kaynağının paylaşılan depolama alanında saklanır. Bu modu etkinleştirmek için katılım gereklidir ve Özel veri kaynağı bölümünde ayrıntılı olarak açıklandığı gibi, özel veri kaynağı sahibinden izin alınması gerekir.
sharedStorage.createWorklet(scriptUrl, {dataOrigin: "script-origin"});

Bu özelliği etkinleştirmek için "script-origin" veya özel bir kaynak kullanırken komut dosyası uç noktasının Shared-Storage-Cross-Origin-Worklet-Allowed üstbilgisiyle yanıt vermesi gerekir. Kaynaklar arası istekler için CORS da etkinleştirilmelidir.

Shared-Storage-Cross-Origin-Worklet-Allowed : ?1
Access-Control-Allow-Origin: *

Üçüncü taraf iFrame kullanarak kaynaklar arası komut dosyaları da çalıştırabilirsiniz. Bu durumda, Shared Storage işlemleri üçüncü taraf göz atma bağlamında yer alır.

Kaynaklar arası iframe kullanma

Ortak depolama iş akışını çağırmak için bir iFrame gerekir.

Reklamın iFrame'inde addModule() çağrısı yaparak iş parçacığı modülünü yükleyin. sharedStorageWorklet.js worklet dosyasında kayıtlı yöntemi çalıştırmak için aynı reklam iframe'i JavaScript'inde sharedStorage.run() işlevini çağırın.

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

İşlet script'inde, reklamın iFrame'inde çalışacak şekilde eşzamansız bir run yöntem içeren bir sınıf oluşturmanız ve register yapmanız gerekir. İçeride sharedStorageWorklet.js:

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

Kaynaklar arası istek kullanma

Paylaşılan depolama ve Private Aggregation, kökler arası iframe'lere gerek kalmadan kökler arası iş parçacıkları oluşturulmasına olanak tanır.

Birinci taraf sayfası, kaynaklar arası JavaScript uç noktasına createWorklet() çağrısı da yapabilir. Worklet'i oluştururken worklet'in veri bölümü kaynağını komut dosyası kaynağı olarak ayarlamanız gerekir.

async function crossOriginCall() {
  const privateAggregationWorklet = await sharedStorage.createWorklet(
    'https://cross-origin.example/js/worklet.js',
    { dataOrigin: 'script-origin' }
  );
  await privateAggregationWorklet.run('pa-worklet');
}
crossOriginCall();

Merkezler arası JavaScript uç noktası, Shared-Storage-Cross-Origin-Worklet-Allowed başlıklarıyla yanıt vermelidir ve istek için CORS'un etkinleştirildiğini belirtmelidir.

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

createWorklet() kullanılarak oluşturulan iş öğelerinde selectURL ve run() bulunur. addModule() bu işlem için kullanılamaz.

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

Özel veri kaynağı

dataOrigin geçerli bir kaynak olarak ayarlandığında, dataOrigin sahibi, işlevlet komut dosyası kaynağını /.well-known/shared-storage/trusted-origins yolunda listeleyen bir JSON dosyası barındırarak söz konusu dataOrigin için Shared Storage'ın işlenmesine izin vermelidir. Dosya, scriptOrigin ve contextOrigin anahtarlarını içeren bir nesne dizisi olmalıdır. Bu anahtarların değerleri dize veya dize dizisi olabilir.

Aşağıdaki bilgileri kullanarak trusted-origins dosyasını oluşturun:

  • Arayan bağlamı
  • Worklet komut dosyası kaynağı ve URL'si
  • Verilerin kaynağı ve sahibi

Aşağıdaki tabloda, bu bilgilere göre trusted-origins dosyasını nasıl oluşturabileceğiniz gösterilmektedir:

Arayan bağlamı İş öğesi komut dosyası URL'si Veri kaynağı Veri sahibi Veri kaynağı sahibinin güvenilen kaynaklar JSON dosyası
https://publisher.example https://publisher.example/script.js context-origin https://publisher.example JSON gerekmez
https://publisher.example https://ad.example/script.js script-origin https://ad.example JSON gerekmez
https://publisher.example https://cdn-ad.example/script.js https://ad.example https://ad.example
[{
  "scriptOrigin": "https://cdn-ad.example",
  "contextOrigin": "https://publisher.example"
}]
      
Herhangi bir arayan https://cdn-ad.example/script.js https://ad.example https://ad.example
[{
  "scriptOrigin": "https://cdn-ad.example",
  "contextOrigin": "*"
}]
      
https://publisher-a.example, VEYA 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 VEYA 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"
}]
      

Örneğin, aşağıdaki JSON https://custom-data-origin.example/.well-known/shared-storage/trusted-origins adresinde barındırılabilir ve https://custom-data-origin.example kaynağı için paylaşılan depolama alanı verilerinin izin verilen tüm işlemcilerini birleştirebilir.

[
  {
    "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"
    ]
}]

Sonraki adımlar

Aşağıdaki sayfalarda, Shared Storage ve Private Aggregation API'lerinin önemli yönleri açıklanmaktadır.

API'leri tanıdıktan sonra, istek gövdesinde JSON olarak aşağıdaki uç noktalara POST isteği şeklinde gönderilen raporları toplamaya başlayabilirsiniz.

  • Hata Ayıklama Raporları - context-origin/.well-known/private-aggregation/debug/report-shared-storage
  • Raporlar - context-origin/.well-known/private-aggregation/report-shared-storage

Raporlar toplandıktan sonra yerel test aracını kullanarak test edebilir veya toplu raporları almak için Toplama Hizmeti için Güvenilir Yürütme Ortamı'nı ayarlayabilirsiniz.

Görüşlerinizi paylaşın

API'ler ve dokümanlarla ilgili geri bildiriminizi GitHub'da paylaşabilirsiniz.