כשעוברים את האתר לקובצי cookie עם חלוקה למחיצות, יכול להיות שתבחינו בהתנהגות לא צפויה אם קיימים באותו לקוח גם קובץ cookie עם חלוקה למחיצות וגם קובץ cookie ללא חלוקה למחיצות עם אותם שמות.
הגדרת קובץ Cookie עם חלוקה למחיצות לא תשנה או תחליף קובץ Cookie קיים ללא חלוקה למחיצות עם אותו שם. שניהם יהיו קיימים כל עוד קובצי ה-cookie של הצד השלישי מופעלים, אבל בקופסאות נפרדות. כשקובצי cookie של צד שלישי מושבתים, רק הקובץ המפוצל יתקבל. אם שני קובצי ה-Cookie נמצאים באתר, לא ניתן לדעת באופן פרוגרמטי איזה מהם מחולק ואילו לא, והדבר עלול להוביל להתנהגות בלתי צפויה.
יש שתי אפשרויות אפשריות לטיפול בבעיה הזו: 1. התוקף של קובץ ה-cookie שמחליפים 2. שינוי השם של קובצי ה-cookie
שיקולים חשובים
במהלך המעבר לקובצי cookie עם חלוקה למחיצות, חשוב לזכור את הדברים הבאים:
- אין דרך לקבוע באופן פרוגרמטי אם קובץ cookie שנשלח בבקשת HTTP מחולק למחיצות או לא. עם זאת, אפשר לקבוע את מצב המחיצה של קובץ cookie בכלי הפיתוח של Chrome. אפשר להבדיל בין קובצי cookie עם חלוקה למחיצות לבין קובצי cookie ללא חלוקה למחיצות שאין להם את המאפיין
HttpOnly
באמצעות CookieStore API. - קובצי Cookie עם חלוקה למחיצות לא מחליפים קובצי Cookie ללא חלוקה למחיצות. שני קובצי Cookie שזהים בדיוק (כלומר עם אותם מאפיינים כמו שם, דומיין או נתיב) יטופלו כקובצי Cookie נפרדים אם רק לאחד מהם יש את המאפיין
Partitioned
. - מומלץ להימנע ממצב שבו יישלחו באותה קריאה לרשת גם קובץ cookie מפולח וגם קובץ 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 ללא מחיצות. לדוגמה, אם יש לכם קובץ Cookie ללא חלוקה למחיצות בשם 'example', אתם יכולים להעביר אותו לקובץ Cookie עם חלוקה למחיצות.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
מכיוון שתוקף קובץ ה-cookie לא נחשף באופן פרוגרמטי, אי אפשר להגדיר את התוקף של קובץ ה-cookie החדש כך שיתאים לתוקף של קובץ ה-cookie ללא חלוקה למחיצות. יכול להיות שיהיה שימושי לרענן את הערך של קובץ ה-cookie במהלך התהליך הזה.
ניהול קובצי cookie עם חלוקה למחיצות (partitioning) וגם ללא חלוקה למחיצות
במהלך תקופת המעבר, מומלץ לשמור על שני קובצי cookie מותאמים נפרדים: אחד מחולק ואחד לא. לדוגמה, יכול להיות שיש לכם גם קובצי cookie מסוג auth
וגם קובצי cookie מסוג auth-partitioned
, כאשר קובץ ה-cookie השני הוגדר עם המאפיין Partitioned
.
בכל פעם שהערך מתעדכן, יש לנסות להגדיר את שני קובצי ה-cookie.
- בלקוחות שחוסמים קובצי cookie של צד שלישי אבל עדיין לא תומכים ב-CHIPS: לא יאושר אף קובץ cookie.
- אצל לקוחות שחוסמים קובצי cookie של צד שלישי ותומכים ב-CHIPS: קובץ ה-cookie
auth
יידחה, אבל קובץ ה-cookieauth-partitioned
יתקבל. - בלקוחות שלא חוסמים קובצי Cookie של צד שלישי, ללא קשר לתמיכה שלהם ב-CHIPS: גם
auth
וגםauth-partitioned
יתקבלו.
כשהאפליקציה צריכה לקרוא את קובץ ה-cookie לאימות, צריך לחפש קודם את auth-partitioned
, אבל אם צריך להחזיר למצב קודם את השינוי באופן זמני, אפשר לחזור לחיפוש קובץ ה-cookie auth
.
לאחר שמוודאים שרוב המשתמשים רעננו את קובצי ה-Cookie, יכול להיות שקובץ ה-Cookie auth-partitioned
יצא משימוש ואפשר יהיה להוסיף את המאפיין המחולק לקובץ ה-cookie הרגיל של האימות.