דרישות חדשות ל-Web Share API במסגרות iframe של צד שלישי

כדי לשפר את רמת הפרטיות והאבטחה, מעכשיו צריך לאשר באופן מפורש קריאות ל-Web Share API במסגרות iframe של צד שלישי.

תומאס שטיינר
תומאס סטיינר

במאמר הזה מתוארים שינוי שעלול לגרום לשיבושים ב-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 של צד שלישי, לאחרונה בוצעו שינויים במפרט שמחייבים אתכם לאשר את הפעולה באופן מפורש. כדי לעשות זאת, אפשר להוסיף מאפיין allow לתג <iframe> עם הערך web-share. הקוד הזה מציין לדפדפן שאתר ההטמעה מאפשר ל-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. כל ספקי הדפדפנים הסכימו לשפר את הפרטיות והאבטחה של המשתמשים, ולמנוע מגורמים זדוניים, כמו מודעות פוגעניות, להפעיל פעולות שיתוף לא צפויות.