כשמעבירים את האתר לקובצי cookie עם חלוקה למחיצות, ייתכן שתיתקלו התנהגות לא צפויה אם גם קובץ Cookie עם חלוקה למחיצות וגם קובץ Cookie ללא חלוקה למחיצות, קיימים לכל לקוח נתון.
הגדרה של קובץ Cookie עם חלוקה למחיצות לא תבטל או תחליף קובץ קיים קובץ Cookie ללא מחיצות עם אותו שם. שניהם קיימים, כל עוד צד שלישי אבל קובצי ה-Cookie מופעלים, אבל בצנצנות קובצי Cookie נפרדות. מתי קובצי Cookie של צד שלישי מושבת, רק הפריט שפוצל יתקבל. אם שני קובצי ה-Cookie קיימת, לא ניתן לדעת באופן פרוגרמטי איזה מהם מחולק למחיצות מי מהם לא נכון, ויכול להיות שתהיה התנהגות לא צפויה.
יש שתי אפשרויות לפתרון הבעיה: 1. תפוגה של קובץ ה-cookie להחלפה 2. שינוי השם של קובצי ה-cookie
שיקולים מרכזיים
במהלך המעבר לקובצי cookie שחולקו למחיצות, חשוב לזכור את הנקודות הבאות:
- אין דרך פרוגרמטית לקבוע אם קובץ cookie מחולקות למחיצות או ללא חלוקה למחיצות. עם זאת, אפשר לקבוע של קובץ ה-Cookie למחיצות (Partitions) בכלי הפיתוח ל-Chrome.
- קובצי cookie מחולקים למחיצות לא מבטלים קובצי cookie ללא חלוקה למחיצות – שני קובצי cookie
זהים בדיוק (כלומר, מכילים אותם מאפיינים כמו שם, דומיין או נתיב)
המערכת תתייחס לקובצי Cookie נפרדים אם רק לאחד מהם יש את המאפיין
Partitioned
. - כדאי להימנע ממצב שבו גם יהיו חלוקה למחיצות וקובץ Cookie ללא חלוקה למחיצות, באותו שם שמוחזר אותה שיחת רשת.
פג התוקף של קובצי ה-cookie להחלפה
אם לא ניתן לאפשר שינוי שם באתר או בשירות, אפשר ליצור
קובץ Cookie חדש שפוצל למחיצות בזמן שפג התוקף של קובץ ה-cookie הקיים ללא המחיצות. בזמן
אין דרך לקבוע אם קובץ cookie מחולק למחיצות, Set-Cookie
כותרות ללא מאפיין Partitioned
לא ישפיעו על קובצי cookie שאינם מופרדים למחיצות.
בדוגמה הבאה אפשר לראות איך יפוג התוקף של קובץ ה-cookie ללא חלוקה למחיצות שנקרא example
, ולהשאיר את כל קובצי ה-cookie שחולקים למחיצות ללא השפעה, גם אם יש להם אותו שם. חדש
קובץ Cookie עם חלוקה למחיצות בשם cookieName
יתווסף או יעודכן אם הוא כבר
קיים.
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
שינוי השם של קובצי ה-cookie
הדרך החזקה ביותר כדי להבטיח מעבר חלק היא להשתמש שמות שונים לקובצי ה-cookie עם חלוקה למחיצות ולא למחיצות. לדוגמה, אם יש לכם קובץ Cookie ללא המחיצות שנקרא "example", אפשר להעביר אותו עם חלוקה למחיצות.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
מאחר שתוקף קובץ ה-cookie לא נחשף באופן פרוגרמטי, אין דרך להגדיר את תאריך התפוגה של קובץ ה-cookie החדש כך לחפוף עם הנתונים על התוקף של קובץ ה-Cookie. ייתכן שזה יהיה פרגמטי לרענן את הערך של קובץ ה-cookie בתהליך הזה.
ניהול קובצי cookie עם חלוקה למחיצות (partitioning) וגם ללא חלוקה למחיצות
במהלך תקופת המעבר, מומלץ לשמור שני קובצי cookie מסונכרנים נפרדים:
שמחולק למחיצות ואחד שלא. לדוגמה, ייתכן שיש לכם את שתי האפשרויות
auth
ו-auth-partitioned
קובצי cookie, כאשר הקובץ השני הוגדר עם
מאפיין Partitioned
.
בכל פעם שהערך מתעדכן, יש לנסות להגדיר את שני קובצי ה-cookie.
- בלקוחות שחוסמים קובצי cookie של צד שלישי אבל עדיין לא תומכים ב-CHIPS: אף אחד מקובצי ה-cookie לא יתקבל.
- בלקוחות שחוסמים קובצי cookie של צד שלישי ותומכים ב-CHIPS: הפונקציה
auth
יידחה, אבל קובץ ה-cookieauth-partitioned
יתקבל. - אצל לקוחות שלא חוסמים קובצי cookie של צד שלישי, בין אם
הם תומכים בצ'יפים: מקבלים גם
auth
וגםauth-partitioned
.
כשהאפליקציה צריכה לקרוא את קובץ ה-cookie לאימות, צריך לחפש
קודם עבור auth-partitioned
; אבל אם צריך לבטל באופן זמני את השינויים
, אפשר לחזור לחיפוש קובץ ה-cookie של auth
.
לאחר שבודקים שרוב המשתמשים
קובצי ה-Cookie שלהם מתרעננים, קובץ ה-Cookie של auth-partitioned
עלול לצאת משימוש
ניתן להוסיף מאפיין עם חלוקה למחיצות לקובץ ה-cookie הרגיל של האימות.