Per una maggiore privacy e sicurezza, le chiamate all'API Web Share negli iframe di terze parti ora devono essere esplicitamente consentite.
Questo articolo descrive 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 implementata in Safari a breve.
L'API Web Share ti consente di condividere testo, URL o file. Nella sua forma più semplice, il codice di condivisione ha un aspetto simile al seguente:
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
recente modifica delle specifiche richiede di consentire esplicitamente l'operazione. Aggiungi un attributo allow
al tag <iframe>
con un valore di web-share
. 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 questo in azione in una demo su GitHub
e visualizzare il
codice sorgente.
Se non fornisci l'attributo, verrà restituito un errore 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 utenti malintenzionati, ad esempio, di attivare azioni di condivisione impreviste.