کوکی ها چیست؟

وب به گونه‌ای طراحی شده است که هر درخواست از یک مرورگر وب به یک وب‌سایت جداگانه باشد. از نظر طراحی، وب هیچ "حافظه‌ای" ندارد. هر بار که یک صفحه وب را باز می‌کنید، وب‌سایتی که بازدید می‌کنید نمی‌تواند اطلاعات آخرین جلسه شما را به خاطر بسپارد. این امر به کارآمدتر شدن وب کمک می‌کند، زیرا نیازی به مکانیسمی برای ردیابی درخواست‌ها و پاسخ‌ها نیست.

اما ماهیت فراموشکار وب، مشکلاتی را نیز ایجاد می‌کند. برای مثال، اگر وب‌سایتی که در آن هستید نتواند به خاطر بیاورد که شما چه چیزی را در سبد خرید خود قرار داده‌اید، چگونه می‌تواند کار کند؟

کوکی‌ها برای حل این مشکل اختراع شدند.

کوکی‌ها به وب‌سایت‌ها حافظه می‌دهند

وقتی از صفحه‌ای در یک وب‌سایت بازدید می‌کنید، مرورگر وب شما درخواست‌هایی را برای منابع موجود در صفحه، مانند HTML، CSS، جاوا اسکریپت یا تصاویر، به سرور وب‌سایت ارسال می‌کند.

مرورگرهای وب و وب‌سایت‌ها با پیروی از پروتکل HTTP با یکدیگر تعامل دارند. این پروتکل مجموعه‌ای استاندارد از قوانین برای ارتباطات است.

در پاسخ به درخواست HTTP برای یک منبع، سرور وب‌سایت می‌تواند اطلاعات اضافی به نام هدرها را به همراه خود منبع ارائه دهد. هدر Set-Cookie که همراه با پاسخ HTTP ارائه می‌شود، به مرورگر شما می‌گوید که متنی را ذخیره کند: یک نام و یک مقدار. این به عنوان کوکی شناخته می‌شود. به عنوان مثال، هدر پاسخ Set-Cookie: cat=tabby به مرورگر شما می‌گوید که یک کوکی با نام "cat" و مقدار "tabby" ذخیره کند.

پس از تنظیم آن کوکی، درخواست‌های بعدی از مرورگر شما به وب‌سایت شامل هدر Cookie: cat=tabby خواهد بود. سرور وب‌سایت می‌تواند از هدر درخواست به کوکی دسترسی پیدا کند و از مقدار آن استفاده کند.

نحوه کار کوکی‌ها: گام به گام

تصور کنید که از وب‌سایت cats.example بازدید می‌کنید. این سایت می‌خواهد یک تصویر تصادفی از یک گربه را به شما نشان دهد و سابقه‌ای از اینکه کدام گربه به شما نمایش داده شده است را ثبت کند.

مراحل زیر نحوه انجام این کار با کوکی‌ها را توضیح می‌دهد.

۱. مرورگر یک فایل را درخواست می‌کند

شما از صفحه اصلی وب‌سایت cats.example بازدید می‌کنید.

پس از اینکه مرورگر شما HTML صفحه اصلی را پردازش کرد، فایل‌های موجود در صفحه، از جمله cat.jpg از cats.example درخواست می‌کند.

یک درخواست HTTP به https://cats.example/cat.jpg

۲. سرور وب‌سایت پاسخ می‌دهد

سرور cats.example با فایل تصویری cat.jpg پاسخ می‌دهد.

سرور به همراه پاسخ، یک هدر به Set-Cookie: cat=tabby اضافه می‌کند.

یک پاسخ HTTP از https://cats.example/cat.jpg، با هدر Set-Cookie: cat=tabby

۳. مرورگر پاسخ را دریافت می‌کند

مرورگر شما فایل تصویر را دریافت می‌کند و هدر Set-Cookie: cat=tabby که همراه آن است را پردازش می‌کند.

یک کوکی ذخیره می‌شود: نام cat ، مقدار tabby .

کوکی cat=tabby در مرورگر وب لپ‌تاپ.

۴. مرورگر درخواست‌های اضافی ارسال می‌کند

از این به بعد، مرورگر شما هدر Cookie: cat=tabby به همراه درخواست‌هایی به cats.example در نظر می‌گیرد.

یک درخواست HTTP به https://cats.example/cat.jpg، با یک کوکی: cat=tabby header

وقتی وب سرور cats.example درخواستی دریافت می‌کند، می‌تواند کوکی را پردازش کند و هر کاری که می‌خواهد با آن مقدار انجام دهد - مثلاً مطمئن شود که دوباره تصویری از همان گربه‌ی ماده برای شما ارسال نمی‌کند.

کل فرآیند کوکی به شرح زیر است:

  1. مرورگر شما یک فایل را از سرور یک وب‌سایت درخواست می‌کند.
  2. سرور می‌تواند یک هدر، مانند Set-Cookie: cat=tabby ، را به همراه فایلی که در پاسخ به درخواست ارسال می‌کند، قرار دهد.
  3. وقتی مرورگر شما پاسخ را دریافت می‌کند، کوکی را ذخیره می‌کند.
  4. با هر درخواست بعدی، مرورگر شما کوکی را در هدر Cookie: cat=tabby به سرور ارسال می‌کند.


نمودار توالی که درخواست‌ها و پاسخ‌ها را بین یک مرورگر وب نشان می‌دهد، ‎cats.example‎، و ‎cats.example‎، که نحوه تنظیم و ارسال کوکی‌ها را نشان می‌دهد.

دسترسی به کوکی‌ها با جاوا اسکریپت

مثال قبلی از هدر پاسخ Set-Cookie برای تنظیم یک کوکی استفاده می‌کند.

کوکی‌ها را می‌توان با استفاده از متد document.cookie با جاوا اسکریپت نیز ایجاد کرد.

نسخه آزمایشی را امتحان کنید: javascript-cookie.glitch.me .

بیشتر بدانید: سند: ویژگی کوکی .

چرا به کوکی‌ها نیاز داریم؟

در سال ۱۹۹۴، مهندس لو مونتولی در شرکت نرم‌افزاری نت‌اسکیپ کار می‌کرد، شرکتی که در ادامه محبوب‌ترین مرورگر وب اواسط دهه ۱۹۹۰ را ساخت. در همین حال، یک شرکت مخابراتی به نام MCI در تلاش بود تا یک سبد خرید برای یکی از اولین فروشگاه‌های آنلاین جهان بسازد. MCI با مونتولی تماس گرفت تا مشکل خود را توضیح دهد. مونتولی با اضافه کردن یک ویژگی به HTTP پاسخ داد که به یک سایت امکان می‌داد مقدار کمی متن، شامل یک نام و یک مقدار، را در مرورگر وب کاربر ذخیره کند: چیزی شبیه cart-id=123 . او آن را "کوکی" نامید، زیرا در آن روزها برنامه‌نویسان از کلمه "کوکی جادویی" برای یک قطعه کوچک از اطلاعات اضافی همراه با ارتباطات داده استفاده می‌کردند.

مونتولی کار کوکی‌های HTTP خود را در کمتر از یک هفته به پایان رساند. او نمی‌دانست که کوکی‌ها برای ویژگی‌های حیاتی پلتفرم وب از جمله تبلیغات، ورود به سیستم، پرداخت‌ها و تشخیص کلاهبرداری به امری اساسی تبدیل خواهند شد. کوکی‌ها یک فناوری به ظاهر ساده هستند که عوارض جانبی گسترده‌ای داشته‌اند.

کاربردهای کوکی‌ها

کوکی‌ها به مرورگر اجازه می‌دهند تا مقدار کمی از اطلاعات مربوط به کاربر را ذخیره کند تا در چندین درخواست، چیزی را «به خاطر بسپارد». کوکی‌ها کاربردهای متعددی دارند:

  • مدیریت جلسه
    به یک وب‌سایت اجازه می‌دهد تا یک کاربر را شناسایی کند، برای مثال، وضعیت ورود به سیستم را در صفحات مختلف حفظ کند.
  • شخصی سازی
    تنظیمات برگزیده کاربر مانند زبان، قالب یا موارد اخیراً مشاهده شده را ذخیره کنید تا تجربه وب‌سایت را سفارشی کنید.
  • ردیابی
    از لحاظ تاریخی، کوکی‌ها برای ردیابی رفتار کاربر در وب‌سایت‌ها، برای تبلیغات هدفمند و موارد استفاده دیگر مورد استفاده قرار گرفته‌اند.

کوکی‌ها بیشتر برای شناسایی استفاده می‌شوند، نه برای ذخیره مستقیم اطلاعات.

برای مثال، یک کوکی برای سبد خرید شما در یک فروشگاه آنلاین حیوانات خانگی، محصولات را فهرست نمی‌کند، بلکه یک شناسه حساب کاربری ارائه می‌دهد که به فروشگاه حیوانات خانگی اجازه می‌دهد تا در فضای ذخیره‌سازی داده‌های سمت سرور خود، آنچه را که در سبد خرید شما وجود دارد، جستجو کند.

یک درخواست به سرور فروشگاه حیوانات خانگی ممکن است شامل یک هدر کوکی مانند این باشد:

Cookie: _cart=CART1.2.34567890.123456789

سپس سرور می‌تواند حساب _cart را در پایگاه داده خود جستجو کند و اطلاعات دیگری در مورد درخواست را در آن بگنجاند.

اطلاعات بیشتر