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

Daha fazla gizlilik ve güvenlik için üçüncü taraf iframe'lerde Web Share API çağrılarına açıkça izin verilmesi gerekmektedir.

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

Web Share API metin, URL veya dosya paylaşmanıza olanak tanır. En basit biçimde, paylaşım kodu aşağıdaki gibi görünür:

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

Bir paylaşım işleminin üçüncü taraf iframe'de gerçekleşmesi gerekiyorsa yakın zamanda yapılan bir spesifikasyon değişikliği, bu işleme açıkça izin vermenizi gerektirir. Bunu, <iframe> etiketine web-share değerine sahip bir allow özelliği ekleyerek yapın. Bu, tarayıcıya yerleştirme sitesinin, yerleştirilmiş üçüncü taraf iframe'in 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>

Bunu Glitch'teki bir demoda görebilir ve kaynak kodu görüntüleyebilirsiniz. Özelliğin sağlanmaması Failed to execute 'share' on 'Navigator': Permission denied mesajını içeren bir NotAllowedError oluşturulmasına neden olur. Bu sınırlama, kullanıcıların gizliliğini ve güvenliğini iyileştirmek ve kötüye kullanım amaçlı reklamlar gibi kötü niyetli kişilerin beklenmedik paylaşım işlemlerini tetiklemesini önlemek için tüm tarayıcı tedarikçileri tarafından kabul edilmiştir.