کوکی ها ( cookie ) در جاوا اسکریپت
در این مقاله با مفهوم کوکی ها آشنا می شویم و طرز کار و استفاده از کوکی را در جاوا اسکریپت بررسی می کنیم.
کوکی ها
یک سری یا رشته از طلاعات کوچک هستند که درون مرورگر اینتر ذخیره می شوند. کوکی های بخشی از پروتکل http می باشند .
کوکی ها معمولا از سمت سرور توسط عبارت Set-Cookie در هدر http تنظیم می شوند و سپش مرورگر آن ها در همه درخواست هایش (در هدر http با استفاده از عبارت Cookie) لحاظ می کند.
همچنین ما میتوانیم از سمت کلاینت به کوکی ها دسترسی داشته باشیم.برای این منظور در جاوا اسکریپت از عبارت document.cookie
استفاده می شود.
نوشتن (ایجاد کردن) کوکی ها :
document.cookie="cookie_name=cookie_value";
خواندن کوکی ها :
alert( document.cookie ); // cookie1=value1; cookie2=value2;...
همانطور که مشخص است برای خواندن کوکی ها از عبارت document.cookie
استفاده کنیم. که محتوای آن عبارت است ناو و محتوای کوکی ( cookie_name=cookie_value ) که توسط علامت ” ; ” از هم جدا می شوند.
در مثال زیر یک تابع نوشته شده است که محتوای یک کوکی را از درون رشته کوکی ها بر می گرداند.
function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}
در تابع بالا از کلاس RegExp استفاده شده است. این کلاس برای طراحی عبارات با قائده ( Regular expressions ) نوشته شده است. عبارات با قاعده الگوهایی قدرتمند برای جستجو و نوشتن (چیزی) درون یک رشته یا متن هستند.[ RegExp ]
برای مثال در سورس زیر چند کوکی تنظیم شده اند و سپس با استفاده از تابع بالا مقدار یکی از آن ها خوانده شده است:
function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}
document.cookie="firstName=Reza;";
document.cookie="lastName=Ahmadi;";
document.cookie="url=MRZX.ir";
alert(getCookie('lastName'));//Ahmadi
ویژگی های کوکی ها:
هنگام نوشتن (ایجاد) کردن یک کوکی یک سری صفت و ویژگی موجود است که میتوان به آن کوکی مشخص نسبت داد؛ این ویژگی ها به شرح زیر است:
Attributes | Description |
---|---|
expires | این ویژگی به مرور گر می گوید که این کوکی تا چه تاریخ و ساعتی معتبر است. |
max-age | این ویژگی نیز تاریخ اعتبار کوکی را مانند ویژگی expires مشخص می کند با این تفاوت که یک مقدار بر حسب ثانیه می پذیرد. |
path | این ویژگی مسیری که این کوکی ها قابل دسترسی باشند را تعریف می کند.برای مثال در مسیر /admin/something . |
domain | این ویژگی دامین مورد نظر را مشخص می کند برای مثال اگر در آدرس ex.mySite.com باشید میتوان با تنظیم این ویژگی برابر mySite.com درستری این کوکی را در همه این دامنه تعیین کرد.البته نمیتوان یک دامنه دیگر را تنظیم کرد برای مثال در اینجا نمی توان نوشت otherSite.com اما می توان نوشت forum.mySite.com . |
expires :
//این کوکی تا تاریخ 20 آگوست 2030 ساعت 12:00 به وقت gmt اعتبار دارد.
document.cookie="username=Duke Martin;expires=Sun, 20 Aug 2030 12:00:00 GMT";
// این کوکی از لحظه ساخته شدن در مرورگر تا یک روز آینده اعتبار دارد.
let date = new Date(Date.now() + 24 * 3600 * 1000);
//یک روز آینده عبارت است از 24 ساعت که هر ساعت 3600 ثانیه و هر ثانیه 1000 میلی ثانیه می باشد.
date = date.toUTCString();
document.cookie = "user=John; expires=" + date;
max-age:
// این کوکی تا یک ساعت اِنده اعتبار دارد
document.cookie = "user=John; max-age=3600";
// این کوکی را اکنون خذف کن.
document.cookie = "user=John; max-age=0";
حذف کوکی : همانطور که در بالا مشاهده میکنید برای حذف کوکی میتوان عبارت max-age را برابر صفر یا کتر از صفر قرار داد؛ همچنین متوان با استفاده از عبارت expires و دادن یک تاریخ قدیمی مثلا سال 2000 آن کوکی را نیز حذف کرد.
domain :
// at site.com
// تنظیم کوکی برای همه ساب دامنه های ای سایت site.com
document.cookie = "user=John; domain=site.com"
// later
// برای مثال اگر درصفحه forum.site.com باشیم و کوکی ها را بخوانیم آن کوکی مورد نظر را مشاهده میکنیم.
alert(document.cookie); // has cookie user=John
همچنین می توان به صورت ترکیبی از ویژگی های بالا نوشت برای مثال :
document.cookie = "user=John; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT"
در مثال بالا مسیر کوکی و تاریخ اعتبار آن مشخص شده است.
تابع زیر یک کوکی را ایجاد میکند:
var today = new Date();
var expiry = new Date(today.getTime() + 30 * 24 * 3600 * 1000); // plus 30 days
function setCookie(name, value)
{
document.cookie=name + "=" + escape(value) + "; path=/; expires=" + expiry.toGMTString();
}
در تابع بالا میتوان یک کوکی را تنظیم کزد این کوکی تا 30 روز اعتبار دارد.
منابع مقاله:
https://javascript.info/cookie
https://www.javatpoint.com/javascript-cookie-attributes
https://www.the-art-of-web.com/javascript/getcookie/
دیدگاهتان را بنویسید