הוצאה משימוש והסרות ב-Chrome 80

ג'ו מדלי
ג'ו מדלי

אין הרשאה ל-XMLHTTPRequest() סינכרוני בסגירת דף

מעכשיו, Chrome לא מאפשר לבצע קריאות סינכרוניות אל XMLHTTPRequest() במהלך סגירת הדף כשהמשתמש מנווט מחוץ לדף או סוגר אותו. המדיניות הזו חלה על beforeunload, unload, pagehide ו-visibilitychange.

כדי להבטיח שהנתונים נשלחים לשרת כשמתבצעת טעינה של דף, מומלץ להשתמש ב-sendBeacon() או ב-Fetch keep-alive. בשלב זה, משתמשים בגרסה הארגונית יכולים להשתמש בדגל המדיניות AllowSyncXHRInPageDismissal, והמפתחים יכולים להשתמש בסימון גרסת המקור לניסיון allow-sync-xhr-in-page-dismissal כדי לאפשר בקשות XHR סינכרוניות במהלך הסרת הנתונים שנטענו לדף. זהו אמצעי זמני לביטול הסכמה, ואנחנו מצפים להסיר את הסימון הזה ב-Chrome 88.

ניתן לקרוא פרטים נוספים על האפשרות הזו ועל החלופות במאמר איסור על שימוש ב-XMLHTTPRequest() סינכרוני במהלך סגירת דף.

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

התמיכה ב-FTP הוצאה משימוש

בהטמעה הנוכחית של ה-FTP ב-Chrome אין תמיכה בחיבורים מוצפנים (FTPS) או בשרתי proxy. השימוש ב-FTP בדפדפן נמוך מספיק, כך שאין יותר אפשרות להשקיע בשיפור לקוח ה-FTP הקיים. בנוסף, לקוחות FTP בעלי יכולות נוספות זמינים בכל הפלטפורמות המושפעות.

ב-Chrome 72 אין את התמיכה באחזור משאבי משנה של מסמכים דרך FTP ובעיבוד של משאבי FTP ברמה העליונה. כשמנווטים לכתובות URL של FTP, מופיע דף של ספרייה או הורדה, בהתאם לסוג המשאב. באג ב-Google Chrome בגרסה 74 ואילך גרם להפסקת התמיכה בגישה לכתובות URL של FTP באמצעות שרתי proxy של HTTP. התמיכה בשרת Proxy ב-FTP הוסרה לחלוטין ב-Google Chrome 76.

שאר היכולות של הטמעת ה-FTP ב-Google Chrome מוגבלות להצגת דף של ספרייה או להורדת משאב בחיבורים לא מוצפנים.

לוח הזמנים להוצאה משימוש מוגדר זמנית:

Chrome 80 (יציב בפברואר 2020)

כברירת מחדל, FTP מושבת עבור לקוחות שאינם ארגוניים, אבל אפשר להפעיל אותו באמצעות הדגל --enable-ftp או באמצעות הדגל --enable-features=FtpProtocol של שורת הפקודה. לחלופין, אפשר להפעיל אותה באמצעות האפשרות #enable-ftp ב-chrome://flags.

Chrome 81 (יציב במרץ 2020)

כברירת מחדל, FTP מושבת בכל ההתקנות של Chrome, אבל אפשר להפעיל אותו באמצעות הדגל --enable-ftp או הדגל --enable-features=FtpProtocol בשורת הפקודה.

Chrome 82 (יציב באפריל 2020)

התמיכה ב-FTP תופסק לחלוטין.

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

אין לאפשר חלונות קופצים במהלך הסרת הנתונים שנטענו בדף

דפים לא יכולים יותר להשתמש ב-window.open() כדי לפתוח דף חדש במהלך הסרת הנתונים שנטענו. חוסם החלונות הקופצים של Chrome כבר אסר זאת, אבל עכשיו הוא אסור גם אם הוא מופעל וגם אם לא.

ארגונים יכולים להשתמש בדגל המדיניות AllowPopupsDuringPageUnload כדי לאפשר הצגה של פריטים קופצים במהלך הסרת הנתונים שנטענו. Chrome מצפה להסיר את הסימון הזה ב-Chrome 82.

כוונה להסיר | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הוסרה סריאליזציה של ImageBitmap ללא נתוני מקור והוסרה

מעכשיו, יופיעו שגיאות כשסקריפט ינסה ליצור סדרה או להעביר מפת ImageBitmap שאינה נקייה ממקור. ImageBitmap שאינו נקי מהמקור הוא כזה שמכיל נתונים מתמונות ממקורות שונים שלא מאומתים לפי הלוגיקה של CORS.

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

לטיפול בפרוטוקול נדרש עכשיו הקשר מאובטח

לשיטות registerProtocolHandler() ו-unregisterProtocolHandler() נדרש עכשיו הקשר מאובטח. בעזרת השיטות האלה אפשר להגדיר מחדש את מצבי הלקוח, כדי לאפשר העברה של מידע שעשוי להיות רגיש באמצעות הרשת.

השיטה registerProtocolHandler() מספקת לדף אינטרנט מנגנון לרישום עצמו לטיפול בפרוטוקול לאחר שהמשתמש הביע הסכמה. לדוגמה, אפליקציית אימייל מבוססת אינטרנט יכולה להירשם כדי לטפל בסכמה mailto:. השיטה unregisterProtocolHandler() התואמת מאפשרת לאתר להפסיק את הרישום לטיפול בפרוטוקולים.

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

הוסרה רכיבי Web Components v0

רכיבי Web Components v0 הוסרו עכשיו מ-Chrome. ממשקי Web Components v1 API הם תקן של פלטפורמת אינטרנט שנשלח ל-Chrome, Safari, Firefox ו-Edge (בקרוב). לקבלת הנחיות לשדרוג, אפשר לקרוא את המאמר עדכון רכיבי אינטרנט: יותר זמן לשדרג לממשקי API של גרסה 1. הפיצ'רים הבאים הוסרו. ההוצאה משימוש חלה על הפריטים שמפורטים בהמשך.

רכיבים מותאמים אישית

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

ייבוא HTML

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

DOM של צל

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

הסרה של webkit-appearance:button לרכיבים שרירותיים

שינוי של -webkit-appearance:button כך שיפעל רק עם הלחצנים <button> ו-<input>. אם צוין button לרכיב שאינו נתמך, לרכיב יש מראה ברירת מחדל. כל שאר מילות המפתח (-webkit-appearance) כבר כוללות הגבלה כזו.

כוונה להסיר | סטטוס הפלטפורמה של Chrome | באג ב-Chromium

מדיניות הוצאה משימוש

כדי לשמור על תקינות הפלטפורמה, לפעמים אנחנו מסירים ממשקי API מפלטפורמת האינטרנט שפעילותם הסתיימה. יכולות להיות סיבות רבות לכך שנסיר ממשק API, למשל:

  • הם מוחלפים בממשקי API חדשים יותר.
  • הם מתעדכנים כדי לשקף שינויים במפרטים כדי לאפשר התאמה ועקביות עם דפדפנים אחרים.
  • אלו הם ניסויים מוקדמים שמעולם לא יצאו לפועל בדפדפנים אחרים, ולכן הם עשויים להגדיל את נטל התמיכה על מפתחי אתרים.

חלק מהשינויים האלה ישפיעו על מספר קטן מאוד של אתרים. כדי לצמצם את הבעיות מראש, אנחנו מנסים לשלוח הודעה מראש למפתחים כדי שיוכלו לבצע את השינויים הנדרשים כדי שהאתרים שלהם ימשיכו לפעול.

ב-Chrome יש כרגע תהליך להוצאה משימוש והסרה של ממשקי API, בעיקרו:

  • הודעה ברשימת התפוצה של blink-dev.
  • כשהמערכת מזהה שימוש בדף, יש להגדיר אזהרות ולציין סולמות זמן במסוף כלי הפיתוח של Chrome.
  • להמתין, לעקוב אחרי השימוש בתכונה ואז להסיר אותה כשהשימוש יורד.

ניתן למצוא רשימה של כל התכונות שהוצאו משימוש ב-chromestatus.com באמצעות המסנן שהוצא משימוש ותכונות שהוסרו על ידי החלת המסנן שהוסר. כמו כן, ננסה לסכם חלק מהשינויים, ההיגיון ונתיבי ההעברה בפוסטים האלה.