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.