هنگامی که یک وب سرور به درخواست یک منبع پاسخ می دهد، سرور می تواند یک هدر 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 گنجانده نمیشود. این می تواند به توقف حملات واسطه ای کمک کند، جایی که یک مهاجم مخفیانه در ارتباطات بین مرورگر و سرور مداخله می کند - برای انتقال اطلاعات و به طور بالقوه تغییر آن.
فقط HTTPO
اگر هدر Set-Cookie شامل HTTPOnly باشد، جاوا اسکریپت نمیتواند به کوکی دسترسی داشته باشد، برای مثال با استفاده از document.cookie . این به محافظت در برابر انواع خاصی از حملاتی که کوکی ها را هدف قرار می دهند کمک می کند.
همان سایت
درخواست منبعی از سایتی که با سایتی که بازدید می کنید متفاوت است، درخواست بین سایتی است. مجموعه کوکی در پاسخ به درخواست بین سایتی یک کوکی شخص ثالث است.
ویژگی SameSite کنترل می کند که آیا کوکی شخص ثالث در یک درخواست گنجانده شود یا خیر. دارای سه مقدار ممکن است: Strict ، Lax یا None .
بیشتر بدانید: کوکی های شخص ثالث چیست؟
سختگیرانه
کوکی فقط در پاسخ به درخواست های صفحه ای که در سایت اصلی کوکی است ارسال می شود. به عنوان مثال: تصور کنید کاربری از cats.example بازدید می کند و یک مجموعه کوکی با ویژگی SameSite=Strict دارد. بعداً، کاربر در سایت دیگری است و پیوندی را به صفحه ای در cats.example دنبال می کند. کوکی تنظیم شده در آن درخواست گنجانده نمی شود.
سست
این کار مانند Strict عمل میکند، با این تفاوت که وقتی کاربر پیوندی را به سایت اصلی کوکی دنبال میکند، مرورگر کوکی را نیز شامل میشود. (در مثال Strict قبلی، زمانی که کاربر پیوند cats.example را دنبال میکند، کوکی گنجانده میشود .) اگر هیچ ویژگی SameSite در سرصفحه Set-Cookie وجود نداشته باشد، Lax پیشفرض است.
هیچ کدام
هیچ محدودیتی وجود ندارد: کوکی با یک درخواست همراه میشود، خواه بین سایتی باشد یا نباشد. با SameSite=None ، کوکی باید ویژگی Secure را نیز داشته باشد.
پارتیشن بندی شده
این ویژگی به شما امکان میدهد کوکی را در فضای ذخیرهسازی پارتیشنبندی شده انتخاب کنید، با یک "شیشه کوکی" جداگانه برای هر سایت سطح بالا. کوکی توسط سایت سطح بالا و همچنین دامنه ای که آن را تنظیم می کند دو کلید می شود.
به عنوان مثال: تصور کنید که وبسایت 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 توضیح داده شده است
- OWASP: کوکی ها