ה־VPN נפל באמצע הדף: האם בקשות רקע עדיין יוצאות?
דף שנשאר פתוח ממשיך לסקור, להתחבר מחדש ולהסתנכרן אחרי שהמנהרה מתה. ראו אילו ניסיונות עדיין יוצאים ואיך להוכיח זאת.
הלשונית עדיין מציגה את לוח הבקרה מלפני שהמנהרה מתה. מספרי המצב קופאים, חיווי קטן ממשיך להסתובב, ושורת הכתובת עדיין נושאת את האפליקציה שפתחתם לפני שעה. לא נגעתם בדבר אחרי הנפילה, ובכל זאת ייתכן שהדף עדיין מנסה להגיע לשרת שלו לפי לוח הזמנים שלו. זה החלק שאנשים מפספסים: דף שרק נראה לעין ודף שעדיין שולח בקשות נראים זהים מבחוץ, ורק אחד מהם מופיע ביומן רשת.
עבודה שדף מתחיל בלעדיכם
ארבעה מנגנונים מחזיקים מסמך טעון עסוק. טיימר חוזר יכול להריץ שוב קריאת מצב כל כמה שניות. fetch יכול להידלק כשהלשונית שוב נראית אחרי שחוזרים אליה. ערוץ חי שנבנה על WebSocket או על אירועים שנשלחים מהשרת יכול לנסות התחברות מחדש לפי לוח הנסיגה שלו. service worker שהאתר רשם יכול להתעורר לסנכרון בתור גם כשאין לשונית לפניכם.
אף אחד מהם לא דורש קליק, ואף אחד מהם לא טוען מחדש את המסמך. שורת הכתובת, מיקום הגלילה והערכים המוצגים נשארים כולם במקומם. מה שמשתנה הוא רק צד הרשת: כל ניסיון חדש הוא החלטה טרייה שמתקבלת ברגע שבו הוא מתחיל.
ההבחנה הזאת חשובה מפני שהדף הנראה נשמר מקומית. פיקסלים שכבר צוירו לא אומרים דבר על כך אם הבקשה הבאה הצליחה. תרשים קפוא עם חיווי הוא המראה הרגיל של דף שבקשותיו נכשלות כעת. קריאת המסך אומרת לכם מה השרת אמר לפני דקות, לא מה הדפדפן עושה כעת.
למה טעינת הדף המוקדמת לא מחזיקה מסלול
שום דבר בטעינת הדף לא קושר את המסמך למנהרה. הניתוב נפתר לכל חבילה, בזמן השליחה, מהטבלה שקיימת כשהחבילה יוצאת. כשממשק המנהרה נעלם, החיפוש הזה כבר לא תואם למסלול המנהרה. הוא או נופל למתאם הפיזי או לא מוצא דבר, בהתאם למה שהלקוח השאיר אחריו.
קריאות חוזרות הן משימות מתוזמנות רגילות. קטע הטיימרים בתקן HTML מתאר איך הן נכנסות לתור ומתייחס למרווח כהשהיה מינימלית ולא כהבטחה לקצב מדויק, כך שלשונית רקע יכולה לסקור לעתים רחוקות בהרבה ממה שהקוד שלה מבקש. פחות ניסיונות אינו אותו דבר כמו אפס ניסיונות, והבאת לשונית חזרה לחזית היא רגע נפוץ לפרץ שלהן.
היכן נוחתת מדיניות הכשל
החסימה של הלקוח מוערכת כשמנסים חיבור, לא כשהדף נאסף. אם גישה רגילה עדיין מותרת, הניסיון החוזר יכול לצאת דרך הקישור הפיזי בגלוי. אם המדיניות מחזיקה את התעבורה הזאת עד שהמנהרה תחזור, הניסיון נכשל ברגע החיבור והדף מציג שגיאה שאולי ינסה שוב כמה שניות לאחר מכן.
שני פרטים קובעים איזה מהם תקבלו. הראשון הוא היקף האכיפה שהלקוח תומך בו: חסימה לכל המכשיר, חסימה מוגבלת למתאם המנהרה, או מערכת כללים עם חריגים. השני הוא אם היעד נופל בתוך חריג שהוספתם קודם למדפסת מקומית, לפורטל לכידה או לשירות סטרימינג.
הצפנה ברמת היישום לא משנה דבר מזה. HTTPS מגן על הבייטים בין הדפדפן לשרת; הוא לא אומר דבר על איזה ממשק נושא אותם. דף יכול להיות מוצפן לחלוטין ועדיין לצאת בדרך הלא נכונה, וזה בדיוק מה שחסימה צרה מאפשרת.
בדיקה מבוקרת עם דף חד־פעמי
השתמשו במארח שאתם שולטים בו ובדף שלא עושה דבר מלבד לקרוא לו, כדי שלא יהיו נתונים אמיתיים במשחק. מהמסוף, דגמו את המסלול לפני הנפילה ואחריה:
curl -sS --max-time 5 -o /dev/null -w '%{http_code} %{remote_ip}\n' https://probe.example.net/pingהריצו אותו כשהמנהרה למעלה, ואז הורידו את המנהרה והריצו שוב. תשובה מכתובת ציבורית כשהמנהרה למטה אומרת לכם שהמסלול הישיר פתוח. פסק זמן או חיבור שנדחה אומרים לכם שהמדיניות מחזיקה. חזרו על כך פעם נוספת אחרי שהלקוח מתחבר מחדש, כדי שתראו את מסלול המנהרה חוזר במקום להניח שכך קרה.
בדפדפן, פאנל הרשת מפריד בין שתי השאלות. סננו ל־Fetch/XHR, ואז קראו את עמודת היוזם: רשומה שהתחילה טיימר או סקריפט, בלי ניווט שנרשם לפניה, היא ניסיון רקע ולא טעינה מחדש. השוו את זמן ההתחלה שלה לרגע שבו המנהרה נפלה. אם הרשומה עדיין ממתינה כשהמנהרה נעלמה, הבקשה ממתינה למסלול שכבר לא קיים.
ראיות בצד השרת חזקות יותר מכל מה שהדפדפן מציג. יומן בקשות עם חותמת זמן וכתובת מקור מוכיח שהחבילה הגיעה. רשומות בדפדפן יכולות לשאת קוקיז, אסימונים וכתובות URL מלאות, אז שמרו רק את השדות שהשאלה שלכם צריכה וטשטשו את השאר לפני שמדביקים אותם במקום כלשהו.
מה לעשות עם התשובה
אם ניסיונות רקע ממשיכים להצליח כשהמנהרה למטה, החסימה צרה ממה שהנחתם, ושווה לסגור את הפער הזה לפני שסומכים על הלקוח לעבודה רגישה. אם הם נכשלים, המדיניות עושה את עבודתה והדף הקפוא הוא קוסמטי. כך או כך, סגירת לשונית אחת אינה שליטה ברמת המכשיר: לשוניות אחרות, דפדפנים אחרים ויישומים אחרים מתזמנים כל אחד את העבודה שלו.
צעדים הבאים ששווה לנקוט: פרטו אילו חריגים הוספתם ולמה, אשרו אם הלקוח חוסם רק תעבורה בהיקף המנהרה או את כל התעבורה, וצפו בבקשת רקע אחת מתחילתה ועד סופה עם יומן השרת פתוח. שלוש התשובות האלה מכסות את רוב מה שדוח בסגנון «ה־VPN נפל ומשהו עדיין מחובר» באמת מכיל.