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

סיפורה של תקלה מוזרה שנתקלתי בה באקספלורר והדרך לפתור אותה

רוב הטרוניות שיש על אינטרנט אקספלורר נובעות בדרך כלל מחוסר התאמתו לתקני האינטרנט, על כך שצריך לשבור את הראש על CSS עבורו, על כך שיש תקלות JavaScript מוזרות – במיוחד אם אתם לא משתמשים ב-jQuery וכו' וכו'. אך רבים מתעלמים מכך שהדפדפן המוזר (בגרסת 8 ומטה) מסוגל גם לתת שגיאות אקזוטיות יותר שגם מפתח מנוסה לא יאמין שהן מתקיימות. אני אדגים באמצעות סיפור אמיתי שהתרחש – בתקווה שתזכרו אותו ואם וכאשר תקלה דומה תקרה אצלכם, תוכלו לנסות ולפתור אותה.

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

הדבר הראשון שעשיתי הוא כמובן לחשוד שבאג JavaScript מוזר מונע את ההקלקה או תוקע את תהליך ההורדה, או איזה אלמנט CSS מתפרע 'מכסה' את הקישור ומונע הקלקה. הדברים האלו קורים לא מעט פעמים ואם היה לי שקל על פעם ששמעתי 'זה לא עובד באינטרנט אקספלורר', הייתי כבר מולטי מיליארדר. השתמשתי בכלי המפתחים של אינטרנט אקספלורר על מנת לרנדר את הדף כמו אינטרנט אקספלורר 8 וניסיתי ללחוץ על הורדת הקובץ – עבד!

'הלו!' זעקתי בגרון ניחר (בכל זאת לא הספקתי לשתות את תה הצמחים שלי באותו בוקר), 'למה אתם בוחשים בלענת כוסי לשווא?'. אך במקום להתנצל, י' הראה לי שבאינטרנט אקספלורר 8 שלו זה לא עובד.

לי מותקן אינטרנט אקספלורר 9 שלמרות שאני מבקש ממנו לרנדר את הדף כאינטרנט אקספלורר 8 – הוא עובד כמו מלך והדפדפן המקורי אינטרנט אקספלורר 8 שמותקן אצל י' (ובדקתי גם דפדפני אינטרנט אקספלורר 8 אחרים במחשבי שאר חברי הצוות) הורדת הקובץ נתקעת. הדפדפן הארור עושה סימנים שהוא מוריד את הקובץ – אך alas, הוא לא מתחיל בהורדה אלא רק בוהה בך בעיני עגל מטופשות וכחולות בצורת e.

זה השלב שגם מפתח אינטרנט מנוסה מתחיל להזיע – אך פתרון הבעיה נעוץ בעובדה שזה עובד באינטרנט אקספלורר 9 שמרנדר לפי 8 ולא עובד באינטרנט אקספלורר 8 – סימן שלא מדובר פה בבאג ב-client side אלא בבאג או פיצ'ר משונה במיוחד שנמצא באינטרנט אקספלורר 8 עצמו. וזה הדבר החשוב ביותר שאתם צריכים לקחת אתכם מהמאמר הזה – לא כל בעיית אינטרנט אקספלורר נובעת מהרינדור השגוי והעקום של הדף – לפעמים זה סתם באג צולע בתוכנה עצמה.

האפליקציה שלנו ישבה על שרת secure (כלומר הכתובת שלו מתחילה ב-https). בדיקה מהירה הראתה שאם אני מתחבר לשרת באמצעות http, ההורדה עובדת דווקא בסדר גמור. לאחר גיגול נמרץ ויריקות אינספור על מסך המחשב, הסתבר שמקור התקלה נובע מכך שאינטרנט אקספלורר לא מוכן לקבל בתנאים מסוימים קבצים שמגיעים משרת https ומגיעים ללא ה-header הבא:


Cache-Control: private;

לשנות header לקובץ זה קל (תלוי באפליקציה שלכם, אבל זה לא אמור להיות מאד קשה), אם יש לכם דרופל זה אפילו עוד יותר קל:


function hook_file_download($filepath) {
        drupal_set_header('WHATEVER HEADER YOU WANT');
}

[אגב, בדרופל לא צריך לעשות את זה, כיוון שהם נתקלו בבאג ובמידה והשרת שעליו מאוחסן דרופל הוא מאובטח, דרופל יורה את ה-header הזה באופן אוטומטי בכל הורדת קובץ, במקרה שלנו הוא לא עשה את זה בגלל ארכיטקטורה מאד מסוימת, אבל זה סיפור אחר שאני לא יכול לספר כאן]

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

פוסטים נוספים שכדאי לקרוא

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

מיקרו בקרים

בית חכם עם ESPHome ו Home Assistant

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

גלילה לראש העמוד