서드 파티 iframe의 Web Share API에 관한 새로운 요구사항

개인 정보 보호 및 보안 향상을 위해 이제 서드 파티 iframe에서 Web Share API 호출을 명시적으로 허용해야 합니다.

토마스 슈타이너
토마스 슈타이너

이 도움말에서는 Web Share API에 적용될 수 있는 브레이킹 체인지를 다룹니다. 이 변경사항은 이미 Firefox에 있으며 Chrome 버전 110부터Safari도 곧 제공될 예정입니다.

Web Share API를 사용하여 텍스트, URL 또는 파일을 공유할 수 있습니다. 가장 간단한 형태의 공유 코드는 다음과 같습니다.

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

서드 파티 iframe에서 공유 작업을 실행해야 하는 경우 최근 사양 변경에 따라 작업을 명시적으로 허용해야 합니다. 값을 web-share<iframe> 태그에 allow 속성을 추가하면 됩니다. 이렇게 하면 삽입 사이트에서 삽입된 서드 파티 iframe이 공유 작업을 트리거할 수 있음을 브라우저에 알립니다.

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

Glitch의 데모에서 실제 동작을 확인하고 소스 코드를 볼 수 있습니다. 속성을 제공하지 못하면 NotAllowedError이 발생하며 Failed to execute 'share' on 'Navigator': Permission denied 메시지가 표시됩니다. 이 제한사항은 사용자의 개인 정보 보호와 보안을 개선하고 악의적인 행위자(예: 악성 광고)가 예기치 않은 공유 작업을 트리거하지 못하도록 하기 위해 모든 브라우저 공급업체에서 동의했습니다.