هنگام انتقال سایت خود به کوکی های پارتیشن بندی شده، ممکن است با رفتار غیرمنتظره ای مواجه شوید اگر یک کوکی پارتیشن بندی شده و پارتیشن بندی نشده با نام های یکسان برای هر مشتری مشخص وجود داشته باشد.
تنظیم یک کوکی پارتیشن بندی شده، کوکی پارتیشن بندی نشده موجود با همین نام را لغو یا جایگزین نمی کند. تا زمانی که کوکیهای شخص ثالث فعال باشند، هر دو وجود خواهند داشت، اما در شیشههای کوکی جداگانه. وقتی کوکیهای شخص ثالث غیرفعال هستند، فقط کوکیهای پارتیشنبندی شده پذیرفته میشوند. اگر هر دو کوکی وجود داشته باشند، از نظر برنامهریزی نمیتوان تشخیص داد که کدام یک پارتیشن بندی شده و کدام یک نیست، و این میتواند منجر به رفتار غیرمنتظره شود.
دو گزینه ممکن برای رفع این مشکل وجود دارد: 1. کوکی که جایگزین آن هستید منقضی شود. 2. نام کوکی های خود را تغییر دهید.
ملاحظات کلیدی
هنگام انتقال به کوکی های پارتیشن بندی شده، موارد زیر را در نظر داشته باشید:
- هیچ راهی برای تعیین پارتیشن بندی یا عدم پارتیشن بندی یک کوکی وجود ندارد. با این حال، میتوانید وضعیت پارتیشن بندی یک کوکی را در ابزار توسعه کروم تعیین کنید.
- کوکیهای پارتیشنبندیشده، کوکیهای پارتیشننشده را بازنویسی نمیکنند - دو کوکی که دقیقاً یکسان هستند (یعنی ویژگیهای یکسانی مانند نام، دامنه یا مسیر دارند) اگر فقط یکی از آنها ویژگی
Partitioned
را داشته باشد، به عنوان کوکیهای جداگانه تلقی میشوند. - بهتر است از موقعیتی اجتناب کنید که در آن یک کوکی پارتیشن بندی شده و یک کوکی پارتیشن نشده با همان نام در یک تماس شبکه بازگردانده شوند.
کوکیهایی که جایگزین میکنید منقضی شوند
اگر سایت یا سرویس شما قادر به تغییر نام نیست، می توانید یک کوکی پارتیشن بندی شده جدید ایجاد کنید در حالی که کوکی پارتیشن بندی نشده موجود منقضی می شود. در حالی که هیچ راهی برای تعیین اینکه آیا یک کوکی پارتیشن بندی شده است یا نه وجود ندارد، سرصفحه های Set-Cookie
بدون ویژگی Partitioned
بر کوکی هایی که پارتیشن بندی نشده اند تأثیر نمی گذارد.
مثال زیر نشان می دهد که چگونه می توان کوکی پارتیشن بندی نشده ای به نام example
منقضی کرد و کوکی های پارتیشن بندی شده را بدون تاثیر گذاشت، حتی اگر نام یکسانی داشته باشند. یک کوکی پارتیشن بندی شده جدید به نام cookieName
در صورت وجود اضافه یا به روز می شود.
Set-Cookie: example=-1;HttpOnly;SameSite=None;Secure;Max-Age:0
Set-Cookie: cookieName=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
نام کوکی های خود را تغییر دهید
قوی ترین راه برای اطمینان از اینکه یک انتقال بدون درز وجود دارد، استفاده از نام های مختلف برای کوکی های پارتیشن بندی شده و پارتیشن نشده است. به عنوان مثال، اگر یک کوکی پارتیشن نشده به نام "مثال" دارید، می توانید آن را به یک کوکی پارتیشن بندی شده منتقل کنید.
Set-Cookie: example-partitioned=value;Secure;SameSite=None;MaxAge=34560000;Partitioned
از آنجایی که انقضای کوکی از نظر برنامهریزی نمایش داده نمیشود، هیچ راهی برای تنظیم انقضای کوکی جدید با انقضای کوکی بدون پارتیشن وجود ندارد. ممکن است تازه کردن ارزش کوکی در طول این فرآیند عملی باشد.
کوکی های پارتیشن بندی شده و پارتیشن نشده را حفظ کنید
در طول دوره انتقال، دو کوکی همگامسازی شده جداگانه را در نظر بگیرید: یکی که پارتیشن بندی شده و دیگری که نیست. برای مثال، ممکن است هم کوکیهای auth
و auth-partitioned
داشته باشید، جایی که دومی با ویژگی Partitioned
تنظیم شده است.
هر بار که مقدار به روز می شود، باید سعی کنید هر دو کوکی را تنظیم کنید.
- در مورد مشتریانی که کوکی های شخص ثالث را مسدود می کنند اما هنوز از CHIPS پشتیبانی نمی کنند: هیچ یک از کوکی ها پذیرفته نمی شود.
- در مورد مشتریانی که کوکیهای شخص ثالث را مسدود میکنند و از CHIPS پشتیبانی میکنند: کوکی
auth
رد میشود، اما کوکیauth-partitioned
پذیرفته میشود. - در مورد مشتریانی که کوکیهای شخص ثالث را مسدود نمیکنند، صرف نظر از اینکه از CHIPS پشتیبانی میکنند یا خیر: هر دو
auth
وauth-partitioned
پذیرفته میشوند.
هنگامی که برنامه شما نیاز به خواندن کوکی احراز هویت دارد، ابتدا باید به دنبال auth-partitioned
باشید. اما اگر مجبورید موقتاً تغییر را برگردانید، میتوانید دوباره به دنبال کوکی auth
بگردید.
هنگامی که مشخص کردید که اکثر کاربران کوکی های خود را به روز کرده اند، کوکی auth-partitioned
می تواند بازنشسته شود و ویژگی Partitioned می تواند به کوکی تأیید اعتبار معمولی اضافه شود.