Per una maggiore privacy e sicurezza, le chiamate all'API Web Share negli iframe di terze parti ora devono essere consentite esplicitamente.
Questo articolo riguarda una modifica potenzialmente che provoca un errore nell'API Web Share. Questa modifica è già presente in Firefox, verrà implementata in Chrome a partire dalla versione 110 e dovrebbe essere disponibile a breve in Safari.
L'API Web Share ti consente di condividere testo, URL o file. Nella sua forma più semplice, il codice di condivisione ha il seguente aspetto:
try {
await navigator.share({
title: 'Title',
text: 'Text',
url: location.href,
});
} catch (err) {
console.error(`${err.name}: ${err.message}`);
}
Se un'azione di condivisione deve avvenire in un iframe di terze parti, una modifica recente alle specifiche richiede di consentire esplicitamente l'operazione. Aggiungi un attributo allow
al tag <iframe>
con un valore web-share
. Questo indica al browser che il sito di incorporamento consente all'iframe di terze parti incorporato di attivare l'azione di condivisione.
<!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>
Puoi vedere come funziona in una demo su Glitch
e visualizzare il
codice sorgente.
Se non fornisci l'attributo, verrà restituito un NotAllowedError
con il messaggio
Failed to execute 'share' on 'Navigator': Permission denied
. Questa limitazione è stata concordata da tutti i fornitori di browser per migliorare la privacy e la sicurezza degli utenti e per impedire a malintenzionati, ad esempio gli annunci illeciti, di attivare azioni di condivisione impreviste.