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 zarara yol açabilecek bir değişiklik ele alınmaktadır. Bu değişiklik Firefox'ta kullanıma sunulmuştur. 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 iframe'de bir paylaşım işleminin gerçekleşmesi gerekiyorsa yakın zamanda gerçekleşen bir spesifikasyon değişikliği bu işleme açıkça izin vermenizi gerektiriyor. Bunu yapmak için <iframe>
etiketine web-share
değerine sahip bir allow
özelliği ekleyin. Bu kod, tarayıcıya, 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>
Bunun nasıl çalıştığını Glitch demosu ile 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
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.