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

Gizliliği ve güvenliği artırmak için üçüncü taraf iFrame'lerdeki Web Share API çağrılarına artık açıkça izin verilmesi gerekiyor.

Bu makalede, Web Share API'deki potansiyel olarak hataya neden olabilecek bir değişiklik ele alınmaktadır. Bu değişiklik Firefox'ta zaten mevcut. Chrome 110 sürümünden itibaren kullanılabilecek ve yakında Safari'de de kullanıma sunulması bekleniyor.

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

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

Paylaşma işleminin üçüncü taraf iFrame'inde yapılması gerekiyorsa yakın zamanda yapılan bir spesifikasyon değişikliği nedeniyle işlemi açıkça onaylamanız gerekir. Bunu yapmak için <iframe> etiketine web-share değerine sahip bir allow özelliği ekleyin. Bu, tarayıcıya yerleştirme sitesinin, yerleştirilmiş üçüncü taraf iframe'in paylaşma 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ği GitHub'daki bir demoda görebilir ve kaynak kodunu görüntüleyebilirsiniz. Özelliğin sağlanmaması, NotAllowedError ile sonuçlanır ve Failed to execute 'share' on 'Navigator': Permission denied mesajı gösterilir. Bu sınırlama, kullanıcıların gizliliğini ve güvenliğini artırmak 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ı sağlayıcılar tarafından kabul edilmiştir.