למה תמונה אחת נכשלת בעוד שאר העמוד נטען
שלושה תנאים מפרידים בין תקלת רשת לבקשה חסומה לבין שגיאת רינדור. מצאו את כתובת ה-URL שהדפדפן בחר לפני שתשנו את הנתיב.
העמוד נטען, הטקסט מוצג, ותמונה אחת נשארת סמל שבור. התגובה הראשונה היא להאשים את המנהרה, כי המנהרה היא הדבר שהשתנה. לפני כן, גלו איזו כתובת URL הדפדפן באמת ביקש עבור התמונה הזו, כי כתובת העמוד וכתובת התמונה הן שתי ראיות שונות. רוב הדיווחים על תמונה חסרה מגיעים לשרת שמעולם לא קיבל בקשה תקינה, והתשובה הזו עולה מבט אחד בלוח הרשת.
שלושה תנאים קובעים היכן לחפש
התנאי הראשון הוא אם התמונה מגיעה מאותו שרת כמו העמוד. שרת תמונות נפרד זקוק לפתרון השמות שלו, לחיבור שלו ולזהות ה-TLS שלו, ולכן עמוד שנטען לא אומר עליו דבר.
התנאי השני הוא אם הדפדפן חסם את הבקשה לפני ששלח אותה. תוכן מעורב, מדיניות אבטחת תוכן וכללי מפנה יכולים לעצור תמונה בלי ליצור תגובת שרת רגילה, ולכן לא מופיעה בקשה שנכשלה ברשימה.
התנאי השלישי הוא אם המסירה הצליחה והרינדור נכשל, מקרה שבו הבתים מגיעים והתמונה עדיין לא מופיעה. לשלושת התנאים האלה שלושה בעלים שונים, ורק הראשון הוא שאלת רשת.
| What you see | Where the fault sits |
|---|---|
| Request absent from the list | Markup, lazy loading or a policy that blocked it |
| Request failed or timed out | Resolution, route, TLS or the image host itself |
| Request returned 200, image blank | Response type, decoding or rendering |
מצאו את המשאב שהדפדפן בחר בו בפועל
כתובת ה-URL שאתם רואים בקוד המקור של העמוד היא לעתים קרובות לא הכתובת שהתבקשה. ערכות מקור, רכיבי picture ורקעי CSS מאפשרים לדפדפן לבחור משאב אחר לפי רוחב חלון התצוגה, צפיפות פיקסלים או תמיכה בתבנית. ייתכן שתמונה שנטענת בעצלתיים לא תתבקש כלל עד שהעמוד יגיע למצב מסוים.
בדקו את הרכיב ואת הבקשה יחד, ושמרו את היוזם לצד הבקשה כשאתם מדווחים על הבעיה. המדריך לרכיב התמונה של MDN מכסה בחירת מקור, התנהגות טעינה ובקרות מפנה במקום אחד, וזה מספיק כדי לדעת איזה מאפיין בחר בכתובת שנכשלה.
רשמו את שם השרת, את הסטטוס, כל שרשרת הפניות ואת סוג התוכן של התגובה. תגובת 200 שמחזירה עמוד התחברות אינה תמונה שמישה, והפניה לעמוד שגיאת HTML נראית זהה לקובץ פגום עד שתקראו את הסוג.
קראו את הסטטוס לפני הרשת
פסק זמן, בקשה שנדחתה ושגיאת פענוח דורשים צעדים הבאים שונים, וקוד הסטטוס הוא מה שמפריד ביניהם. פסק זמן מצביע על פתרון שמות, נתיב או שרת שאינו עונה. בקשה שנדחתה מצביעה על מדיניות או שכבת הרשאה. שגיאת פענוח מצביעה על הבתים או על התבנית.
אם הבקשה כלל אינה מופיעה, הפסיקו להסתכל ברשת והסתכלו בסימון. הסיבה הנפוצה ביותר היא רשומה בערכת מקור שהדפדפן העדיף ושאינה קיימת עוד בשרת, ואחריה רכיב שסקריפט מעולם לא הפך לגלוי.
ההבחנה הזו לבדה מונעת את רוב המאמץ המבוזבז בסוג הזה של דיווחים.
כשהדפדפן חוסם, אין תגובה לקרוא
תוכן מעורב הוא המקרה הקלאסי: עמוד HTTPS שמבקש תמונה דרך HTTP פשוט מקבל את הבקשה חסומה ולא כושלת, והקונסולה רושמת את הסיבה. מדיניות אבטחת תוכן יוצרת את אותה צורה, כשהנחיה החסומה נזכרת בהודעה. מדיניות מפנה שמסירה את הכותרת יכולה גם לגרום לשרת מוגן מפני היטקינק להחזיר מציין מקום במקום את התמונה.
קראו את הסיבה שנרשמה לפני שאתם נוגעים בנתיב הרשת, כי החסימות האלה לא משתפרות כשהנתיב משתנה. הוספת הרשאות חוצות-מקור אינה הפתרון גם כן: הצגת תמונה משרת אחר וקריאת הפיקסלים שלה ב-canvas הן פעולות שונות, ורק השנייה זקוקה לכותרים שאנשים מדביקים.
באתר שאתם מנהלים, תקנו את כתובת המשאב, את התגובה או את המדיניות אצל הבעלים שלה והשאירו את דרישות ההרשאה והמפנה שלמות. באתר שאינכם שולטים בו, שלחו את העמוד ואת ראיות הבקשה לערוץ התמיכה שלו במקום לפרסם מחדש קישורי משאב פרטיים או שפג תוקפם.
השוו נתיבים בלי לשנות את הראיות
אם אתם באמת רוצים לבדוק את נתיב הגישה, החזיקו כל דבר אחר קבוע: אותו עמוד, אותו חשבון, אותה תמונה נבחרת, נתיב מורשה אחד שהשתנה. השוו את רשומות הבקשה זו לצד זו ולא את התוצאה המרונדרת, כי התוצאה המרונדרת אומרת אם התמונה הופיעה, לא למה.
תמונה שנטענת בנתיב חדש אינה מוכיחה שהנתיב הזה מורשה, ותמונה שנשארת שבורה אינה מוכיחה שהמנהרה אשמה. אם התמונה הוסרה או שהגישה מוגבלת בכוונה, השתמשו בחלופה נתמכת במקום לכבות בדיקות תעודות או להעתיק חומר מוגן של מישהו אחר.
סדר העבודה: זהו את כתובת ה-URL הנבחרת, קראו את הסטטוס והסוג שלה, בדקו אם יש סיבת חסימה רשומה, ואז השוו שינוי נתיב אחד בכל פעם.