Üçüncü taraf iframe'lerde Web Paylaşımı API'si için yeni şartlar

Daha iyi gizlilik ve güvenlik için üçüncü taraf iFrame'lerindeki Web Share API çağrılarına artık açıkça izin verilmesi gerekiyor.

Bu makalede, Web Share API'de önemli olabilecek bir değişiklik ele alınmaktadır. Bu değişiklik Firefox'ta zaten mevcuttur. Chrome 110 sürümünden itibaren kullanıma sunulacak ve yakında Safari'de kullanıma sunulması bekleniyor.

Web Share API, metin, URL veya dosya paylaşmanıza olanak tanır. Paylaşım kodu, en basit haliyle şöyle görünür:

try {
  await navigator.share({
    title: 'Title',
    text: 'Text',
    url: location.href,
  });
} catch (err) {
  console.error(`${err.name}: ${err.message}`);
}

Üçüncü taraf bir iFrame'de paylaşım işleminin yapılması gerekiyorsa son yapılan bir özellik değişikliği nedeniyle işleme açıkça izin vermeniz gerekir. Bunu yapmak için <iframe> etiketine web-share değerine sahip bir allow özelliği ekleyin. Bu, tarayıcıya yerleştiren sitenin, yerleştirilen üçüncü taraf iframe'ın paylaşım işlemini tetiklemesine izin verdiğini bildirir.

<!DOCTYPE html>
<html lang="en">
  <body>
    <h1>Web Share in third-party iframes</h1>
    <!-- The embedding page is hosted on https://example.com/index.html. -->
    <iframe allow="web-share" src="https://third-party.example.com/iframe.html"></iframe>
  </body>
</html>

Bu özelliğin nasıl çalıştığını Glitch'teki bir denemede görebilir ve kaynak kodunu inceleyebilirsiniz. Özelliğin sağlanmaması, Failed to execute 'share' on 'Navigator': Permission denied mesajını içeren bir NotAllowedError ile sonuçlanır. Bu sınırlama, kullanıcıların gizliliğini ve güvenliğini iyileştirmek ve kötü niyetli kişilerin (ör. kötüye kullanım amaçlı reklamlar) beklenmedik paylaşım işlemlerini tetiklemesini önlemek için tüm tarayıcı tedarikçileri tarafından kabul edilmiştir.