وب به گونه ای طراحی شده است که هر درخواست از یک مرورگر وب به یک وب سایت جداگانه است. از نظر طراحی، وب هیچ "حافظه ای" ندارد. هر بار که یک صفحه وب را باز می کنید، وب سایتی که از آن بازدید می کنید نمی تواند اطلاعات آخرین جلسه شما را به خاطر بسپارد. این به کارآمد و ساده شدن وب کمک می کند، زیرا نیازی به مکانیزمی برای ردیابی درخواست ها و پاسخ ها نیست.
اما ماهیت فراموشی وب نیز مشکلی را ایجاد می کند. برای مثال، اگر وبسایتی که در آن هستید نمیتواند چه چیزی را در آن قرار دادهاید، به خاطر بیاورد، سبد خرید چگونه میتواند کار کند؟
کوکی ها برای حل این مشکل اختراع شدند.
کوکی ها به وب سایت ها حافظه می دهند
هنگامی که از یک صفحه در یک وب سایت بازدید می کنید، مرورگر وب شما برای منابع موجود در صفحه مانند HTML، CSS، جاوا اسکریپت یا تصاویر درخواست هایی را از سرور وب سایت می کند.
مرورگرهای وب و وب سایت ها با پیروی از پروتکل HTTP تعامل دارند. این مجموعه ای استاندارد از قوانین ارتباطی است.
در پاسخ به یک درخواست HTTP برای یک منبع، سرور وب سایت می تواند اطلاعات اضافی به نام هدر را همراه با خود منبع شامل شود. هدر Set-Cookie
همراه با یک پاسخ HTTP به مرورگر شما میگوید متنی را ذخیره کند: یک نام و یک مقدار. این به عنوان یک کوکی شناخته می شود. به عنوان مثال، هدر پاسخ Set-Cookie: cat=tabby
به مرورگر شما میگوید که یک کوکی با نام «cat» و مقدار «tabby» ذخیره کند.
هنگامی که آن کوکی تنظیم شد، درخواستهای بعدی از مرورگر شما به وبسایت شامل سرصفحه Cookie: cat=tabby
. سرور وب سایت می تواند از هدر درخواست به کوکی دسترسی پیدا کند و از مقدار آن استفاده کند.
نحوه کار کوکی ها: گام به گام
تصور کنید از وب سایت cats.example
بازدید می کنید. این سایت می خواهد یک تصویر تصادفی از یک گربه را به شما نشان دهد و یک رکورد از اینکه کدام گربه برای شما نمایش داده شده است را حفظ کند.
مراحل زیر نحوه انجام این کار با کوکی ها را توضیح می دهد.
1. مرورگر یک فایل درخواست می کند
شما از صفحه اصلی وب سایت cats.example
دیدن می کنید.
هنگامی که مرورگر شما HTML صفحه اصلی را پردازش کرد، فایلهای موجود در صفحه، از جمله cat.jpg
از cats.example
درخواست میکند.

2. سرور وب سایت پاسخ می دهد
سرور در cats.example
با فایل تصویری cat.jpg
پاسخ می دهد.
با پاسخ، سرور شامل یک هدر است: Set-Cookie: cat=tabby
.

3. مرورگر پاسخ دریافت می کند
مرورگر شما فایل تصویر را دریافت میکند و هدر Set-Cookie: cat=tabby
همراه با آن را پردازش میکند.
یک کوکی ذخیره میشود: name cat
، value tabby
.

4. مرورگر درخواست های اضافی می کند
از این پس، مرورگر شما شامل هدر Cookie: cat=tabby
با درخواستهایی به cats.example
است.

وقتی وب سرور cats.example
درخواستی دریافت میکند، میتواند کوکی را پردازش کند و هر کاری را که میخواهد با آن مقدار انجام دهد - مانند اطمینان از اینکه دوباره تصویری از همان گربه تابی برای شما ارسال نمیکند.
در اینجا کل فرآیند کوکی آمده است:
- مرورگر شما درخواستی برای یک فایل به سرور یک وب سایت می کند.
- سرور می تواند شامل یک هدر مانند
Set-Cookie: cat=tabby
به همراه فایلی باشد که در پاسخ به درخواست ارسال می کند. - وقتی مرورگر شما پاسخ را دریافت می کند، کوکی را ذخیره می کند.
- با هر درخواست بعدی، مرورگر شما کوکی را در یک
Cookie: cat=tabby
header.

با جاوا اسکریپت به کوکی ها دسترسی پیدا کنید
مثال قبلی از هدر پاسخ Set-Cookie
برای تنظیم یک کوکی استفاده می کند.
همچنین میتوان کوکیها را با استفاده از روش document.cookie
با جاوا اسکریپت ایجاد کرد.
نسخه ی نمایشی را امتحان کنید: javascript-cookie.glitch.me .
بیشتر بدانید: سند: ویژگی کوکی .
چرا به کوکی ها نیاز داریم؟
در سال 1994، مهندس لو مونتولی در شرکت نرم افزاری Netscape کار می کرد، که به ساخت محبوب ترین مرورگر وب در اواسط دهه 1990 ادامه داد. در همین حال، یک شرکت مخابراتی، MCI، در تلاش بود تا یک سبد خرید برای یکی از اولین فروشگاه های آنلاین جهان بسازد. MCI با Montulli تماس گرفت تا مشکل آنها را توضیح دهد. Montulli با افزودن ویژگی به HTTP پاسخ داد که یک سایت را قادر میسازد تا مقدار کمی متن را در مرورگر وب کاربر، یک نام و یک مقدار ذخیره کند: چیزی مانند cart-id=123
. او آن را "کوکی" نامید، زیرا در آن روزها برنامه نویسان از کلمه "کوکی جادویی" برای بخش کوچکی از اطلاعات اضافی همراه با ارتباطات داده استفاده می کردند.
لو کار کوکی HTTP خود را در کمتر از یک هفته به پایان رساند. او نمیدانست که کوکیها برای تبلیغات، ورود به سیستم، پرداختها، تشخیص تقلب و سایر سرویسهای وب حیاتی ضروری هستند. کوکی ها یک فناوری بسیار ساده هستند که عوارض جانبی گسترده ای داشته است.
موارد استفاده برای کوکی ها
کوکیها به مرورگر اجازه میدهند تا مقدار کمی از اطلاعات کاربر را ذخیره کند، تا چیزی را در چندین درخواست «به خاطر بسپارد». کوکی ها چندین کاربرد دارند:
- مدیریت جلسه
به یک وب سایت اجازه دهید یک کاربر را شناسایی کند، به عنوان مثال برای حفظ وضعیت ورود به سیستم در صفحات مختلف. - شخصی سازی
برای سفارشی کردن تجربه وبسایت، تنظیمات برگزیده کاربر مانند زبان، موضوع یا مواردی که اخیراً مشاهده شدهاند ذخیره کنید. - ردیابی
از لحاظ تاریخی، از کوکیها برای ردیابی رفتار کاربر در سراسر وبسایتها، برای تبلیغات هدفمند و سایر موارد استفاده استفاده میشده است.
کوکی ها بیشتر برای شناسه ها استفاده می شوند، نه برای ذخیره مستقیم اطلاعات.
به عنوان مثال، یک کوکی برای سبد خرید شما در یک فروشگاه حیوانات خانگی آنلاین، محصولات را فهرست نمیکند، اما در عوض یک شناسه حساب ارائه میکند که به پتشاپ اجازه میدهد تا آنچه را که در سبد خرید شما وجود دارد، در فضای ذخیرهسازی اطلاعات سمت سرور جستجو کند.
یک درخواست به سرور پت شاپ ممکن است شامل یک هدر کوکی مانند این باشد:
Cookie: _cart=CART1.2.34567890.123456789
سپس سرور میتواند حساب _cart
را در دیتا استور خود جستجو کند و اطلاعات دیگری درباره درخواست درج کند.