وقتی یک وب سرور به درخواستی برای یک منبع پاسخ میدهد، میتواند یک هدر Set-Cookie را به همراه پاسخ خود اضافه کند. این هدر به مرورگر شما میگوید که یک کوکی ذخیره کند.
برای مثال: Set-Cookie:cat=tabby .
علاوه بر ارائه نام و مقدار کوکی، Set-Cookie میتواند شامل ویژگیهایی برای کنترل تنظیم کوکیها و زمان انقضای آنها باشد. ویژگیهای کوکی با نقطه ویرگول از هم جدا میشوند. به عنوان مثال:
Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
این سند مهمترین ویژگیهای کوکی را توضیح میدهد:
استفاده از کوکیهای HTTP ویژگیهای کوکی را با جزئیات فنی بیشتری توضیح میدهد.
امن
اگر یک هدر Set-Cookie شامل Secure باشد، کوکی فقط با درخواستهای رمزگذاری شدهای که از پروتکل HTTPS استفاده میکنند، درج میشود: کوکی در درخواستهای HTTP درج نمیشود. این میتواند به جلوگیری از حملات واسطهای کمک کند، جایی که یک مهاجم مخفیانه در ارتباطات بین مرورگر و سرور مداخله میکند - برای انتقال اطلاعات و به طور بالقوه تغییر آن.
فقط HTTP
اگر یک هدر Set-Cookie شامل HTTPOnly باشد، جاوا اسکریپت نمیتواند به کوکی دسترسی پیدا کند، برای مثال با استفاده از document.cookie . این به محافظت در برابر انواع خاصی از حملات که کوکیها را هدف قرار میدهند، کمک میکند.
همان سایت
درخواست منبعی از سایتی که با سایتی که بازدید میکنید متفاوت است، درخواست بین سایتی (Cross-Site Request) نامیده میشود. کوکیای که در پاسخ به یک درخواست بین سایتی تنظیم میشود، کوکی شخص ثالث (Third-Party Cookies) نام دارد.
ویژگی SameSite کنترل میکند که آیا یک کوکی شخص ثالث در یک درخواست گنجانده شود یا خیر. این ویژگی سه مقدار ممکن دارد: Strict ، Lax یا None .
بیشتر بدانید: کوکیهای شخص ثالث چیستند؟
سختگیر
این کوکی فقط در پاسخ به درخواستهایی از صفحهای که در سایت مبدا کوکی قرار دارد، ارسال میشود. برای مثال: تصور کنید کاربری از cats.example بازدید میکند و کوکیای با ویژگی SameSite=Strict دارد. بعداً، کاربر در سایت دیگری است و پیوندی را به صفحهای در cats.example دنبال میکند. کوکی تنظیمشده در آن درخواست لحاظ نخواهد شد.
لاکس
این دستور مانند Strict عمل میکند، با این تفاوت که مرورگر، کوکی را زمانی که کاربر لینکی به سایت مبدا کوکی را دنبال میکند، نیز در نظر میگیرد. (در مثال Strict قبلی، کوکی زمانی که کاربر لینک cats.example را دنبال میکند، در نظر گرفته میشود .) اگر هیچ ویژگی SameSite در هدر Set-Cookie گنجانده نشده باشد، Lax پیشفرض است.
هیچکدام
بدون محدودیت: کوکی با درخواست همراه خواهد بود، چه بین سایتی باشد چه نباشد. با SameSite=None ، کوکی باید ویژگی Secure را نیز داشته باشد.
پارتیشن بندی شده
این ویژگی به شما امکان میدهد کوکی را برای فضای ذخیرهسازی پارتیشنبندیشده انتخاب کنید، با یک "cookie jar" جداگانه برای هر سایت سطح بالا. این کوکی توسط سایت سطح بالا و همچنین دامنهای که آن را تنظیم میکند، دو بار کنترل میشود.
برای مثال: تصور کنید که وبسایت A و وبسایت B هر دو شامل یک iframe از وبسایت C هستند. یک کوکی پارتیشنبندی شده که توسط iframe در وبسایت A تنظیم شده است، توسط iframe در وبسایت B قابل دسترسی نیست: کوکی AC از کوکی BC جدا است.

کوکیهایی با ویژگی Partitioned به عنوان CHIPS شناخته میشوند: کوکیهایی که حالت پارتیشنبندی مستقل دارند.
کوکیهای پارتیشنبندیشده باید ویژگی Secure را داشته باشند.
اطلاعات بیشتر: کوکیهایی که حالت پارتیشنبندی مستقل دارند .
تاریخ انقضا و حداکثر سن
شما میتوانید تاریخ و زمان Expires یا Max-Age را بر حسب ثانیه مشخص کنید که پس از آن کوکی باید حذف شود و دیگر ارسال نشود. برای مثال:
-
Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT; -
Set-Cookie:cat=tabby; Max-Age=86400
اگر ویژگی Max-Age یا Expires را مشخص نکنید، کوکی با پایان جلسه فعلی حذف میشود. این نوع کوکی گاهی اوقات به عنوان کوکی جلسه شناخته میشود.
دامنه
اگر یک هدر Set-Cookie دارای ویژگی Domain باشد، کوکی در درخواستهای ارسالی به دامنه مشخص شده و هر یک از زیر دامنههای آن گنجانده خواهد شد.
اگر سربرگ Set-Cookie فاقد ویژگی Domain باشد، کوکی در درخواستهای ارسالی به زیردامنهها لحاظ نخواهد شد.
به عبارت دیگر، گنجاندن ویژگی Domain ، محدودیتهای دامنه را کاهش میدهد .
برای مثال، با پاسخی از وبسایت cats.example :
-
Set-Cookie:cat=tabby
کوکی فقط با درخواستهای مربوط بهcats.exampleهمراه خواهد بود. -
Set-Cookie:cat=tabby; Domain=cats.example
این کوکی در درخواستهای ارسالی بهcats.exampleو همچنین هرگونه درخواست برای منابع در زیردامنههایی مانندfluffy.cats.exampleیاuser.assets.cats.exampleگنجانده خواهد شد.
مسیر
اگر یک ویژگی Path در هدر پاسخ Set-Cookie گنجانده شود، کوکی تنظیمشده فقط در درخواستهای URLهایی (در سایتی که کوکی را تنظیم کرده است!) که با مقدار Path مطابقت دارند، گنجانده میشود.
برای مثال:
-
Set-Cookie:cat=tabby; Path=/articles
این کوکی برای درخواست به هر مسیر URL که با/articlesشروع شود، لحاظ خواهد شد:
✅https://cats.example/articles/tabby/index.html
✅https://cats.example/articles/breeds/tabby/index.html
❎https://cats.example/images/tabby.jpg
❎https://cats.example/en/articles/tabby/index.html -
Set-Cookie:cat=tabby; Path=/
تمام درخواستها به هر URL در سایت شامل کوکی خواهد بود.
اگر هدر پاسخ Set-Cookie مقدار Path نداشته باشد، کوکی فقط با درخواستهای مربوط به همان دایرکتوری همراه خواهد بود. برای مثال، تصور کنید که یک کوکی cat=tabby در پاسخ به درخواستی برای cats.example/images/tabby.jpg. اگر هیچ Path تنظیم نشده باشد، کوکی فقط با درخواستهای مربوط به فایلهای درون دایرکتوری cats.example/images همراه خواهد بود.
دموها
- 1pc.glitch.me : نسخه آزمایشی کوکیهای شخص ثالث
- 3pc.glitch.me : نسخه آزمایشی کوکی شخص ثالث
ابزارها
اطلاعات بیشتر
- دستور پخت کوکیهای دست اول
- کوکیها چیستند؟
- کوکیهای شخص ثالث چیستند؟
- درخواست و پاسخ HTTP
- ابزارهای کوکی
- دموهای کوکی
- استفاده از کوکیهای HTTP
- کوکیهای SameSite توضیح داده شدند
- اواسپ: کوکیها