Nuovi requisiti per l'API Web Share negli iframe di terze parti

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.