خانه برنامه نویسی کوکی ها ( cookie ) در جاوا اسکریپت
کوکی ها ( cookie ) در جاوا اسکریپت

کوکی ها ( cookie ) در جاوا اسکریپت


۲۸ اسفند ۱۳۹۸
رضا احمدی
105 بازدید
دسته بندی : JavaScript , برنامه نویسی

در این مقاله با مفهوم کوکی ها آشنا می شویم و طرز کار و استفاده از کوکی را در جاوا اسکریپت بررسی می کنیم.

کوکی ها

یک سری یا رشته از طلاعات کوچک هستند که درون مرورگر اینتر ذخیره می شوند. کوکی های بخشی از پروتکل http می باشند .

کوکی ها معمولا از سمت سرور توسط عبارت Set-Cookie در هدر http تنظیم می شوند و سپش مرورگر آن ها در همه درخواست هایش (در هدر http با استفاده از عبارت Cookie) لحاظ می کند.

همچنین ما میتوانیم از سمت کلاینت به کوکی ها دسترسی داشته باشیم.برای این منظور در جاوا اسکریپت از عبارت document.cookie استفاده می شود.

نوشتن (ایجاد کردن) کوکی ها :

  1.     document.cookie="cookie_name=cookie_value";

خواندن کوکی ها :

  1.  alert( document.cookie ); // cookie1=value1; cookie2=value2;...

همانطور که مشخص است برای خواندن کوکی ها از عبارت document.cookie استفاده کنیم. که محتوای آن عبارت است ناو و محتوای کوکی ( cookie_name=cookie_value ) که توسط علامت ” ; ” از هم جدا می شوند.

در مثال زیر یک تابع نوشته شده است که محتوای یک کوکی را از درون رشته کوکی ها بر می گرداند.

  1.  function getCookie(name)
  2.   {
  3.     var re = new RegExp(name + "=([^;]+)");
  4.     var value = re.exec(document.cookie);
  5.     return (value != null) ? unescape(value[1]) : null;
  6.   }

در تابع بالا از کلاس RegExp استفاده شده است. این کلاس برای طراحی عبارات با قائده ( Regular expressions ) نوشته شده است. عبارات با قاعده الگوهایی قدرتمند برای جستجو و نوشتن (چیزی) درون یک رشته یا متن هستند.[ RegExp ]

برای مثال در سورس زیر چند کوکی تنظیم شده اند و سپس با استفاده از تابع بالا مقدار یکی از آن ها خوانده شده است:

  1.  function getCookie(name)
  2.   {
  3.     var re = new RegExp(name + "=([^;]+)");
  4.     var value = re.exec(document.cookie);
  5.     return (value != null) ? unescape(value[1]) : null;
  6.   }
  7. document.cookie="firstName=Reza;";
  8. document.cookie="lastName=Ahmadi;";
  9. document.cookie="url=MRZX.ir";
  10.  
  11. alert(getCookie('lastName'));//Ahmadi

ویژگی های کوکی ها:

هنگام نوشتن (ایجاد) کردن یک کوکی یک سری صفت و ویژگی موجود است که میتوان به آن کوکی مشخص نسبت داد؛ این ویژگی ها به شرح زیر است:

AttributesDescription
expiresاین ویژگی به مرور گر می گوید که این کوکی تا چه تاریخ و ساعتی معتبر است.
max-ageاین ویژگی نیز تاریخ اعتبار کوکی را مانند ویژگی expires مشخص می کند با این تفاوت که یک مقدار بر حسب ثانیه می پذیرد.
pathاین ویژگی مسیری که این کوکی ها قابل دسترسی باشند را تعریف می کند.برای مثال در مسیر /admin/something .
domainاین ویژگی دامین مورد نظر را مشخص می کند برای مثال اگر در آدرس ex.mySite.com باشید میتوان با تنظیم این ویژگی برابر mySite.com درستری این کوکی را در همه این دامنه تعیین کرد.البته نمیتوان یک دامنه دیگر را تنظیم کرد برای مثال در اینجا نمی توان نوشت otherSite.com اما می توان نوشت forum.mySite.com .

expires :

  1. //این کوکی تا تاریخ 20 آگوست 2030 ساعت 12:00 به وقت gmt اعتبار دارد.
  2. document.cookie="username=Duke Martin;expires=Sun, 20 Aug 2030 12:00:00 GMT";
  1. // این کوکی از لحظه ساخته شدن در مرورگر تا یک روز آینده اعتبار دارد.
  2. let date = new Date(Date.now() + 24 * 3600 * 1000);
  3. //یک روز آینده عبارت است از 24 ساعت که هر ساعت 3600 ثانیه و هر ثانیه 1000 میلی ثانیه می باشد.
  4. date = date.toUTCString();
  5. document.cookie = "user=John; expires=" + date;

max-age:

  1. // این کوکی تا یک ساعت اِنده اعتبار دارد
  2. document.cookie = "user=John; max-age=3600";
  3.  
  4. // این کوکی را اکنون خذف کن.
  5. document.cookie = "user=John; max-age=0";

حذف کوکی : همانطور که در بالا مشاهده میکنید برای حذف کوکی میتوان عبارت max-age را برابر صفر یا کتر از صفر قرار داد؛ همچنین متوان با استفاده از عبارت expires و دادن یک تاریخ قدیمی مثلا سال 2000 آن کوکی را نیز حذف کرد.

domain :

  1. // at site.com
  2. // تنظیم کوکی برای همه ساب دامنه های ای سایت site.com
  3. document.cookie = "user=John; domain=site.com"
  4.  
  5. // later
  6.  
  7. // برای مثال اگر درصفحه forum.site.com باشیم و کوکی ها را بخوانیم آن کوکی مورد نظر را مشاهده میکنیم.
  8. alert(document.cookie); // has cookie user=John

همچنین می توان به صورت ترکیبی از ویژگی های بالا نوشت برای مثال :

  1. document.cookie = "user=John; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT"

در مثال بالا مسیر کوکی و تاریخ اعتبار آن مشخص شده است.

تابع زیر یک کوکی را ایجاد میکند:

  1. var today = new Date();
  2.   var expiry = new Date(today.getTime() + 30 * 24 * 3600 * 1000); // plus 30 days
  3.  
  4.   function setCookie(name, value)
  5.   {
  6.     document.cookie=name + "=" + escape(value) + "; path=/; expires=" + expiry.toGMTString();
  7.   }

در تابع بالا میتوان یک کوکی را تنظیم کزد این کوکی تا 30 روز اعتبار دارد.

منابع مقاله:

https://javascript.info/cookie
https://www.javatpoint.com/javascript-cookie-attributes
https://www.the-art-of-web.com/javascript/getcookie/

مطالب مرتبط

 دیدگاهتان را بنویسید   

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *