גרסת המקור לניסיון של בקשת הרשאת גישה לרשת פרטית: נתיב להעברת אתרים באמצעות HTTPS

Yifan Luo
Yifan Luo

רקע

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

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

הודעת הרשאה כאפשרות החדשה

הוספת המאפיין החדש targetAddressSpace כאפשרות אחזור תאפשר לבקשה לדלג על בדיקת התוכן המעורב.

דוגמה:

fetch("http://router.local/ping", {
  targetAddressSpace: "private",
});

בהתאם למאמר גישה לרשת פרטית: הצגת בקשות קדם-הפעלה, כל בקשה לרשת פרטית תוצג לפני בקשת קדם-הפעלה. בקשת קדם-ההפעלה הזו תכלול כותרת חדשה, Access-Control-Request-Private-Network: true, והתגובה המתאימה חייבת לכלול את הכותרת Access-Control-Allow-Private-Network: true.

כדי להתאים את ההודעה החדשה לבקשת הרשאה, דרשנו מהמכשירים לכלול שתי כותרות תגובה חדשות: Private-Network-Access-Name ו-Private-Network-Access-ID.

Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>

דוגמה:

Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

Private-Network-Access-ID: ערך של 48 סיביות שמוצג כ-6 בייטים הקסדצימליים מופרדים בנקודתיים. Private-Network-Access-Name: שם תקין כמחרוזת שתואמת לביטוי הרגולרי /^[a-z0-9_-.]+$/ של ECMAScript. האורך המקסימלי של השם הוא 248 יחידות קוד UTF-8.

הדגמה (דמו)

אפשר לבדוק את הדמו בכתובת: https://private-network-access-permission-test.glitch.me/.

הרשמה לתקופת ניסיון למקור

כדי להבטיח שבקשת ההרשאות לגישה לרשת פרטית תעזור למפתחים לאמץ הגבלות הקשר מאובטח לגישה לרשת פרטית, אנחנו מוסיפים אותן לגרסת המקור לניסיון ב-Chrome מגרסה 120 עד 122.

כדי לאפשר לאתר שלכם להשתמש בבקשה להרשאה, צריך להירשם לתקופת הניסיון למקור:

  1. מבקשים אסימון למקור.
  2. משתמשים באסימון באחת מהדרכים הבאות:
    • בקוד ה-HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • בקוד ה-JavaScript: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • בכותרות ה-HTTP: text Origin-Trial: TOKEN_GOES_HERE

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

משאבים