התכונה'צמצום Accept-Language' נועדה לצמצם את הפלטפורמות ליצירת טביעות אצבע פסיביות על ידי צמצום העדפות השפה של המשתמש בכותרת Accept-Language
ושליחת השפה המועדפת ביותר של המשתמש בלבד (רק אחת).
החל מגרסת הבטא של Chrome 109, נפתח את גרסת המקור לניסיון של צמצום Accept-Language, כדי לאפשר לאתרים להביע הסכמה לקבלת הכותרת Accept-Language
המקוצרת. כך האתרים יוכלו לזהות ולתקן בעיות לפני שההתנהגות המוגבלת של Accept-Language
תהפוך לברירת המחדל ב-Chrome בגרסה עתידית. כדי לבדוק את התכונה לפני שהיא תושק לאוכלוסייה יציבה, חשוב להביע הסכמה ולבדוק אותה לפני תאריך ההשקה של Chrome 109 (התאריך המתוכנן הוא 10 בינואר 2023).
בהמשך מפורטות דוגמאות לכותרת Accept-Language
לפני ואחרי ההפחתה.
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Accept-Language: en-GB
בהמשך מופיעה סקירה כללית של תקופת הניסיון למקורות נתונים, וגם מה צפוי לכם. אתם יכולים לשלוח משוב על השינוי הזה או על בעיות שתתקלו בהן במהלך תקופת הניסיון במקור במאגר GitHub של Accept-Language Reduction.
מהו Accept-Language?
המחרוזת Accept-Language משותפת בכל בקשת HTTP וחשופה ב-JavaScript לכל המשאבים שהדפדפן טוען. נכון לעכשיו, הוא מכיל את כל השפות המועדפות על המשתמש.
למה ה-Accept-Language מצטמצם?
התכונה 'צמצום Accept-Language' היא ניסיון לצמצם את הפלטפורמות הפסיביות ליצירת טביעות אצבע ב-Chrome.
נכון לעכשיו, הכותרת Accept-Language
משותפת כברירת מחדל בכל בקשת HTTP, וחשופה ב-JavaScript לכל המשאבים שנטענים על ידי הדפדפן. הוא מכיל את כל העדפות השפה של המשתמש. במקום שהדפדפן ישלח את הרשימה המלאה של השפות שהמשתמש הגדיר למקרה שהאתרים ירצו לספק תוכן בכמה שפות, אנחנו משיקים דרך חדשה לאתרים לציין תוכן בכמה שפות, והדפדפן יהיה אחראי לנהל את המשא ומתן לגבי השפה ולהציג את השפה המועדפת.
סיבה נוספת היא שאתרים רבים לא משתמשים בכלל בכותרות Accept-Language
לצורך משא ומתן על שפה (לדוגמה, במחקר אחד צוין שרק 7.2% מתוך 10,000 האתרים המובילים משתמשים ב-Accept-Language
). מצב פרטי ב-Chrome כבר צמצם את Accept-Language
לאחד.
מה המשמעות מבחינת מפתחי אתרים?
באתרים שמסתמכים על Accept-Language
כדי לנהל משא ומתן על שפה, צריך להתכונן לקבלת Accept-Language
מופחתת ולשקול להשתתף בגרסת הטרום-השקה של המקור. ערכי Accept-Language
המוקטנים יופיעו ב:
- כותרת בקשת ה-HTTP
Accept-Language
. - פונקציית ה-getter של JavaScript
navigator.languages
.
הדפדפן יישא באחריות לניהול המשא ומתן על השפה כדי לבחור את השפה המועדפת על המשתמש לשליחה לאתרים. כדי לעשות זאת, צריך להוסיף לאתר שני כותרות Variants
(כותרת חדשה מציינת אתרים שתומכים בשפות) Accept-Language
ו-Content-Language
בכותרת התגובה (ראו דוגמה מפורטת בהמשך).
תוכניות Accept-Language
עם ההנחה לא כוללות כרגע את iOS ו-WebView, והפלטפורמות האלה ימשיכו לקבל את הרשימה המלאה של Accept-Language
של המשתמשים.
התמיכה בפלטפורמות האלה מתוכננת למועד מאוחר יותר.
גרסת מקור לניסיון להפחתת מידע מהבקשה Accept-Language
כדי להפעיל גרסת טרום-השקה במקור, האתר המשתתף צריך לספק אסימון בתגובה שלו, שמורה לדפדפן להפעיל את גרסת הטרום-השקה שצוינה. עם זאת, המשמעות היא שבבקשה הראשונית של הדפדפן לאתר אין לו דרך לדעת אם האתר משתתף בתוכנית ניסוי למקורות. המשמעות היא שהבקשה הראשונית בסשן לא תשלח את Accept-Language header
המופחת.
בקשות למשאבי משנה בדף הזה, גם מאותו מקור וגם ממקורות שונים, יקבלו את הכותרת המקוצרת Accept-Language
. גם ניווטים נוספים מאותו מקור יקבלו את הכותרת המקוצרת Accept-Language
. ניווטים בין מקורות יחזרו לשליחת הכותרת המלאה, אבל בקשות בין מקורות בתוך הדף (כמו בקשות iframe של צד שלישי) עדיין ישלחו את הכותרת Accept-Language
המקוצרת אם לבקשת המסגרת ברמה העליונה יש אסימון ניסיון תקף למקור.
זה דומה לניסוי ההפחתה של סוכן המשתמש במקור. למידע נוסף על ההטמעה הפנימית ב-Chromium, אפשר לקרוא את המאמר הטמעה של כותרת HTTP מסוג Reduce Accept-Language.
השתתפות בגרסת המקור לניסיון של צמצום Accept-Language
אפשר לקרוא הנחיות נוספות במאמר תחילת השימוש בגרסת המקור לניסיון של Chrome, אבל השלבים החיוניים מפורטים בהמשך.
שלב 1
כדי להירשם לתקופת הניסיון למקור ולקבל אסימון לדומיינים שלכם, תוכלו להיכנס לדף Trial for Accept-Language Reduction.
שלב 2
מעדכנים את כותרות התגובה של HTTP:
- מוסיפים את
Origin-Trial: <ORIGIN TRIAL TOKEN>
לכותרת התגובה של ה-HTTP, כאשר <ORIGIN TRIAL TOKEN
> מכיל את האסימון שקיבלת כשנרשמת לגרסת המקור לניסיון. - מוסיפים את
Content-Language
לכותרת התגובה של ה-HTTP כדי לציין את השפות המיועדות לקהל. - מוסיפים את
Variants
לכותרת התגובה של ה-HTTP כדי לציין את השפות הנתמכות באתר. - [אופציונלי] מוסיפים את
Vary: Accept-Language
לתגובת ה-HTTP כדי ליצור מפתח מטמון לניהול משא ומתן על תוכן. - הגדרת הכותרות האלה תגרום רק לניהול משא ומתן על שפת הדפדפן (הפעלה מחדש פוטנציאלית של הבקשה הראשונית) למקור הנתון. כדי שהאתרים יציגים את ייצוג השפה הנכון למשתמשים, צריך גם לעדכן את האתרים ששולחים את התוכן על סמך הכותרת Accept-Language של המשתמש (ראו דוגמה בהמשך).
שלב 3
טוענים את האתר ב-Chrome M109 Beta (או גרסה מתקדמת יותר) ומתחילים לקבל את המחרוזת המקוצרת של Accept-Language.
אפשר לשלוח בעיות או משוב למאגר GitHub של Accept-Language Reduction.
הדגמה (דמו)
הדגמה של אתר בכמה שפות שהביע הסכמה לתוכנית הניסוי למקורות (יחד עם קוד המקור) זמינה בכתובת https://reduce-accept-language.glitch.me/.
הדגמה של הסכמה לשימוש בתכונה 'הצגת הודעה על הסכמה לשימוש בשפה' בתקופת הניסיון בדומיין המקור (יחד עם קוד המקור) זמינה בכתובת https://reduce-accept-language-ot.glitch.me/.
לדוגמה, example.com
תומך ב-ja
(יפנית) וב-en
(אנגלית). בקשה יכולה להיות:
GET / HTTP/1.1
Host: example.com
Accept-Language: en
האתר יודע שהמשתמש מעדיף תוכן באנגלית על סמך הערך של accept-language שלו. כותרות התגובה עשויות לכלול:
HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
אם למשתמש יש העדפה לתוכן בשפה היפנית, הבקשה תהיה:
GET / HTTP/1.1
Host: example.com
Accept-Language: ja
במקרה כזה, האתר מגיב עם כותרות לתוכן ביפנית:
HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
בצד השרת, יכול להיות שהאתר יחפש תמיכה בשפה ספציפית, אבל יחזור לשפת ברירת המחדל אם לא תזוהה תמיכה:
if(accept_language == 'ja') {
res.response('ja_page')
}
else {
res.response('en_page')
}
בדוגמה שלמעלה, example.com
משיב en
או ja
על סמך הערך של Accept-Language
, והערך שמוגדר כברירת מחדל הוא en
אם לא נמצאה התאמה. במקרה כזה, האתר יכול גם לספק הפניות אוטומטיות לדפי השפה המתאימים, /en
או /ja
, על סמך הערך של Accept-Language
. במסמך ההטמעה מפורטות דוגמאות להפניות אוטומטיות.
תמיכה בגרסת מקור לניסיון של צד שלישי
בשלב הזה אנחנו לא תומכים ברישום הדומיינים שלכם כצד שלישי בתקופת הניסיון.
אם אתם מפעילים שירות שמוטמע כמשאב משנה במקורות שונים (כמו הצגת מודעות או ניתוח נתונים), תקבלו את הכותרת המקוצרת Accept-Language
רק אם האתר ברמה העליונה משתתף בגרסת הניסיון של המקור.
אימות שהגרסה לניסיון באתר המקור פועלת
במדריך לפתרון בעיות בגרסת המקור של Chrome מופיעה רשימת משימות מלאה שתעזור לכם לוודא שהאסימון מוגדר בצורה נכונה.
אפשר להגדיר כמה שפות ואת סדר העדיפויות שלהן דרך chrome://settings/languages
או 'הגדרות' → 'שפות'. מומלץ לבחור שפה שהאתר לא תומך בה ולהעביר אותה לראש הרשימה כדי להבטיח שהמשא ומתן החוזר הנוסף יופעל.
הכותרות של התגובה הראשונית שמכילות את אסימון תקופת הניסיון במקור אמורות להיראות כך:

כותרות הבקשה הבאות שמכילות את Accept-Language המקוצר נראות כך:

הפסקת ההשתתפות בתוכנית 'תקופת ניסיון במקור'
בכל שלב במהלך תקופת הניסיון, תוכלו להפסיק את ההשתתפות ולקבל את הרשימה המלאה של Accept-Language של המשתמשים. כדי להפסיק את ההשתתפות:
- מסירים את הכותרת
Origin-Trial
של תקופת הניסיון של צמצום Accept-Language מתשובת ה-HTTP. - [אופציונלי] אם אתם לא רוצים לשלוח את הכותרת
Variants
, שהיא הכותרת שנוספת כדי להביע הסכמה לתקופת הניסיון במקור, תוכלו להסיר אותה מתשובת ה-HTTP. אפשר גם להשתמש ב-Variants
עם ערך ריק כדי להשיג את זה. - [אופציונלי] אם אתם לא רוצים לשלוח את הכותרת
Content-Language
, שהיא הכותרת שמתווספת לתגובת ה-HTTP כדי להביע הסכמה לניסיון המקור, תוכלו להסיר אותה.
משך תקופת הניסיון של גרסת המקור
תקופת הניסיון של גרסת המקור של צמצום Accept-Language תפעל למשך שישה חודשים לפחות, שתואמים לכ-6 אבני דרך של Chrome. גרסת המקור לניסיון תופיע בגרסה M109 ותסתיים בגרסה M114 (כלומר בגרסה האחרונה של Chrome שבה האפשרות הזו זמינה). בשלב הזה, Chrome יעריך את המשוב מהניסוי במקור לפני שהוא ימשיך לשלוח את המחרוזת המקוצרת של Accept-Language בשלבים: קודם יקצר את כותרת ה-HTTP של Accept-Language ואז יקצר את ממשק ה-JS. אם באתר שלכם נדרש זמן נוסף לבדיקה, תוכלו להצטרף לתוכנית הניסיון הבאה להוצאה משימוש של מקור, שתאפשר לכם לגשת למחרוזת המלאה של Accept-Language למשך שישה חודשים נוספים לפחות. נפרסם פרטים נוספים על תקופת הניסיון להוצאה משימוש כשהיא תהיה מוכנה.
מתן משוב
אפשר לשלוח בעיות או משוב למאגר GitHub של Accept-Language Reduction.