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

Per migliorare la privacy e la sicurezza, le chiamate all'API Web Share in iframe di terze parti ora devono essere esplicitamente consentite.

Questo articolo riguarda una modifica potenzialmente che provoca un errore nell'API Web Share. Questa modifica è già presente in Firefox, sarà disponibile in Chrome a partire dalla versione 110 e dovrebbe essere disponibile a breve anche in Safari.

L'API Web Share 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 alle specifiche richiede di consentire esplicitamente l'operazione. Per farlo, 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 questa funzionalità in azione in una demo su Glitch e visualizzare il codice sorgente. Se non specifichi l'attributo, verrà generato 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 evitare che utenti malintenzionati, ad esempio gli annunci illeciti, attivino azioni di condivisione impreviste.