Nouvelles exigences pour l'API Web Share dans des cadres iFrame tiers

Pour améliorer la confidentialité et la sécurité, les appels de l'API Web Share dans les iFrames tiers doivent désormais être explicitement autorisés.

Cet article décrit une modification potentiellement destructive de l'API Web Share. Cette modification est déjà disponible dans Firefox, sera disponible dans Chrome à partir de la version 110 et devrait être bientôt disponible dans Safari.

L'API Web Share vous permet de partager du texte, des URL ou des fichiers. Dans sa forme la plus simple, le code de partage se présente comme suit:

try {
  await navigator.share({
    title: 'Title',
    text: 'Text',
    url: location.href,
  });
} catch (err) {
  console.error(`${err.name}: ${err.message}`);
}

Si une action de partage doit se produire dans un iFrame tiers, une modification récente des spécifications nécessite que vous autorisiez explicitement l'opération. Pour ce faire, ajoutez un attribut allow à la balise <iframe> avec une valeur de web-share. Cela indique au navigateur que le site d'intégration autorise l'iFrame tiers intégré à déclencher l'action de partage.

<!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>

Vous pouvez voir ce comportement en action dans une démonstration sur Glitch et consulter le code source. Si vous ne fournissez pas l'attribut, un NotAllowedError s'affiche avec le message Failed to execute 'share' on 'Navigator': Permission denied. Tous les fournisseurs de navigateurs se sont mis d'accord sur cette limitation afin d'améliorer la confidentialité et la sécurité des utilisateurs, et d'éviter que des personnes malintentionnées, telles que des annonces abusives, ne déclenchent des actions de partage inattendues.