وقتی یک کاربر وارد یک وبسایت میشود، مرورگر میتواند اطلاعات کوچکی را برای استفاده در درخواستهای بعدی نگهداری کند. این اطلاعات معمولاً با مکانیزمی به نام Cookie مدیریت میشوند.
Cookie یکی از مفاهیم پایه در توسعه وب است و در بسیاری از قابلیتهای سایتها مانند نگهداری تنظیمات کاربر، شناسایی نشست، ذخیره برخی ترجیحات و مدیریت وضعیت مرورگر استفاده میشود.
Laravel نیز API ساده و قدرتمندی برای کار با Cookie در اختیار توسعهدهنده قرار میدهد.
در این مقاله یاد میگیریم:
- Cookie چیست؟
- Cookie چگونه کار میکند؟
- چگونه در Laravel یک Cookie بسازیم؟
- چگونه Cookie را بخوانیم؟
- چگونه Cookie را حذف کنیم؟
- چگونه مدت اعتبار Cookie را مشخص کنیم؟
- تفاوت Cookie و Session چیست؟
- Cookie در Request و Response چه نقشی دارد؟
- Cookie Facade و Helper چیست؟
- تنظیمات امنیتی Cookie چه هستند؟
- HttpOnly، Secure و SameSite چه مفهومی دارند؟
- چه اطلاعاتی را نباید داخل Cookie قرار دهیم؟
- چگونه از Cookie در پروژه واقعی Laravel استفاده کنیم؟
# Cookie چیست؟
Cookie یک قطعه اطلاعات کوچک است که توسط وبسایت برای مرورگر ارسال میشود و مرورگر میتواند آن را برای درخواستهای بعدی نگهداری کند.
برای مثال تصور کنید کاربر زبان سایت را روی فارسی تنظیم کرده است.
سایت میتواند این ترجیح را در Cookie ذخیره کند:
language = fa
وقتی کاربر دوباره به سایت مراجعه میکند، مرورگر میتواند Cookie را همراه درخواست ارسال کند و برنامه متوجه شود که زبان انتخابشده توسط کاربر فارسی بوده است.
به زبان ساده:
Server
↓
Set-Cookie
↓
Browser
↓
Cookie Storage
↓
Request بعدی
↓
Cookie
↓
Server
# چرا Cookie در وب مهم است؟
پروتکل HTTP بهصورت Stateless طراحی شده است.
یعنی هر Request بهصورت مستقل پردازش میشود و سرور بهصورت خودکار تمام اطلاعات درخواستهای قبلی را در اختیار ندارد.
Cookie یکی از مکانیزمهایی است که به مرورگر و سرور اجازه میدهد برخی اطلاعات را بین درخواستهای مختلف منتقل کنند.
برای مثال:
Request 1
↓
Server sets Cookie
↓
Browser stores Cookie
↓
Request 2
↓
Browser sends Cookie
↓
Server reads Cookie
به همین دلیل Cookie در بسیاری از سیستمهای وب کاربرد دارد.
# Cookie در Laravel چگونه کار میکند؟
در Laravel، Cookie معمولاً در قالب بخشی از HTTP Response ساخته میشود.
برای مثال:
return response('Hello')
->cookie('language', 'fa');
Laravel یک Response ایجاد میکند و Cookie را به Headerهای آن اضافه میکند.
مرورگر بعد از دریافت Response، Cookie را ذخیره میکند.
در درخواستهای بعدی، مرورگر در صورت برقرار بودن شرایط Cookie، آن را برای دامنه مربوطه ارسال میکند.
# ساخت Cookie در Laravel
یکی از سادهترین روشها استفاده از متد cookie() روی Response است.
مثلاً:
return response('Cookie created')
->cookie('username', 'Saeed');
در این مثال:
نام Cookie: username
مقدار: Saeed
خواهد بود.
# تعیین مدت اعتبار Cookie
معمولاً هنگام ساخت Cookie باید مشخص کنیم که Cookie چه مدت اعتبار داشته باشد.
مثلاً:
return response('Cookie created')
->cookie('username', 'Saeed', 60);
در اینجا عدد 60 مدت اعتبار Cookie بر حسب دقیقه است.
بنابراین Cookie برای مدت مشخصی معتبر خواهد بود.
# ساخت Cookie با Cookie Facade
Laravel امکان استفاده از Cookie Facade را نیز در اختیار ما قرار میدهد.
برای مثال:
use Illuminate\Support\Facades\Cookie;
سپس:
$cookie = Cookie::make(
'username',
'Saeed',
60
);
در نهایت میتوان Cookie را به Response اضافه کرد:
return response('Cookie created')
->withCookie($cookie);
# تفاوت Cookie::make و response()->cookie
دو روش رایج برای ساخت Cookie عبارتاند از:
Cookie::make(...)
و:
response()->cookie(...)
هر دو میتوانند برای ساخت Cookie استفاده شوند.
روش اول زمانی مفید است که بخواهید Cookie را بهصورت مستقل بسازید و بعداً آن را به Response اضافه کنید.
روش دوم برای موارد سادهتر بسیار خوانا است:
return response('OK')
->cookie('theme', 'dark', 60);
# خواندن Cookie در Laravel
برای خواندن Cookie موجود در Request میتوان از متد cookie() روی Request استفاده کرد.
مثلاً:
$value = $request->cookie('username');
اگر Cookie وجود داشته باشد، مقدار آن دریافت میشود.
# مثال کامل خواندن Cookie
در Controller:
use Illuminate\Http\Request;
public function index(Request $request)
{
$username = $request->cookie('username');
return $username;
}
در این مثال Laravel Cookie موجود در Request را دریافت میکند.
# دریافت Cookie از Request
یک روش دیگر این است که Request را بررسی کنیم:
$value = request()->cookie('username');
این روش در مواقعی که به شیء Request دسترسی مستقیم نداریم میتواند مفید باشد.
# تعیین مقدار پیشفرض برای Cookie
در برخی سناریوها ممکن است Cookie وجود نداشته باشد.
بنابراین بهتر است در منطق برنامه این حالت را نیز در نظر بگیریم.
مثلاً:
$theme = $request->cookie('theme', 'light');
در این حالت اگر Cookie مربوط به theme وجود نداشته باشد، مقدار پیشفرض:
light
استفاده خواهد شد.
# حذف Cookie در Laravel
برای حذف Cookie میتوان از متد forget() استفاده کرد.
مثلاً:
return response('Cookie removed')
->withCookie(
Cookie::forget('username')
);
در این حالت Laravel Cookie مربوط به username را برای حذف شدن علامتگذاری میکند و مرورگر در نتیجه Response آن را حذف خواهد کرد.
# حذف Cookie با Response
میتوان این کار را در یک Response انجام داد:
return response('Logged out')
->withCookie(Cookie::forget('username'));
این الگو در سناریوهایی مانند Logout یا حذف تنظیمات کاربر کاربرد دارد.
# Cookie در Controller
یک مثال ساده از استفاده Cookie در Controller:
use Illuminate\Http\Request;
class PreferenceController
{
public function setTheme()
{
return response('Theme saved')
->cookie('theme', 'dark', 60 * 24 * 30);
}
public function getTheme(Request $request)
{
return $request->cookie('theme', 'light');
}
}
در این مثال:
- Theme کاربر ذخیره میشود.
- Cookie به مدت مشخصی معتبر است.
- در درخواست بعدی Theme از Cookie خوانده میشود.
- اگر Cookie وجود نداشته باشد،
lightاستفاده میشود.
# استفاده از Cookie برای تنظیمات کاربر
یکی از کاربردهای مناسب Cookie، نگهداری ترجیحات ساده کاربر است.
مثلاً:
theme = dark
language = fa
currency = toman
یا:
sidebar = collapsed
البته اطلاعاتی که داخل Cookie ذخیره میکنید باید کوچک، غیرحساس و متناسب با نیاز برنامه باشد.
# Cookie و انتخاب زبان سایت
فرض کنید سایت شما چندزبانه است.
کاربر زبان فارسی را انتخاب میکند:
return response()
->redirectTo('/dashboard')
->cookie('locale', 'fa', 60 * 24 * 30);
در درخواستهای بعدی:
$locale = $request->cookie('locale', 'fa');
اکنون برنامه میتواند بر اساس Cookie زبان مناسب را انتخاب کند.
# Cookie و Theme سایت
یک کاربرد دیگر، ذخیره Theme انتخابشده توسط کاربر است.
مثلاً:
return response()
->cookie('theme', 'dark', 60 * 24 * 30);
سپس:
$theme = request()->cookie('theme', 'light');
و در Blade میتوان بر اساس مقدار Theme رابط کاربری مناسب را نمایش داد.
# Cookie و Redirect
Cookie را میتوان همراه Redirect نیز ارسال کرد.
مثلاً:
return redirect()
->route('dashboard')
->withCookie(
cookie('theme', 'dark', 60 * 24 * 30)
);
این الگو در پروژههای واقعی بسیار کاربردی است.
مثلاً کاربر تنظیمی را تغییر میدهد، سپس به صفحه دیگری منتقل میشود و Cookie نیز همراه Redirect تنظیم میشود.
# Cookie و Response
مفهوم مهمی که باید درک کنید این است که Cookie معمولاً بخشی از Response است.
مثلاً:
return response('OK')
->cookie('name', 'Saeed', 60);
در اینجا Cookie همراه Response از Laravel به مرورگر ارسال میشود.
بهصورت مفهومی:
Laravel
|
| HTTP Response
| Set-Cookie
↓
Browser
# Cookie و Request چه تفاوتی دارند؟
هنگام ایجاد Cookie:
Response
اهمیت دارد.
هنگام دریافت Cookie:
Request
اهمیت دارد.
یعنی:
Server → Browser
Response + Set-Cookie
Browser → Server
Request + Cookie
این تفاوت برای درک نحوه کار Cookie بسیار مهم است.
# تفاوت Cookie و Session
Session و Cookie بسیار به یکدیگر مرتبط هستند اما یکی نیستند.
| ویژگی | Cookie | Session |
|---|---|---|
| محل نگهداری | مرورگر | بسته به Driver |
| ارسال به سرور | معمولاً همراه Request | بر اساس سازوکار Session |
| مناسب برای تنظیمات ساده | بله | بله |
| مناسب برای داده حساس | با ملاحظات جدی | با طراحی مناسب |
| حجم | محدود | وابسته به Storage |
| مدیریت وضعیت کاربر | میتواند نقش داشته باشد | کاربرد بسیار مهم |
| وابستگی به Browser | زیاد | بخشی از مکانیزم آن با Cookie مرتبط است |
بهصورت ساده:
Cookie معمولاً در سمت مرورگر نگهداری میشود، در حالی که Session یک سازوکار مدیریت وضعیت است که محل ذخیره آن به Driver انتخابشده بستگی دارد.
# آیا Session بدون Cookie کار میکند؟
باید بین مفهوم Session و Session Identifier تفاوت قائل شویم.
در بسیاری از سیستمهای Web، مرورگر یک شناسه مرتبط با Session را از طریق Cookie نگهداری میکند.
به این ترتیب:
Browser
↓
Session Cookie
↓
Session ID
↓
Server-side Session Storage
در چنین معماریای Cookie لزوماً محل نگهداری تمام اطلاعات Session نیست؛ بلکه میتواند شناسهای را نگهداری کند که Laravel با استفاده از آن Session مربوطه را پیدا میکند.
این نکته یکی از مهمترین تفاوتهای مفهومی Cookie و Session است.
# Cookieهای مهم در Authentication
در سیستمهای Authentication مبتنی بر Session، Cookie میتواند نقش مهمی در حفظ وضعیت کاربر داشته باشد.
بهصورت ساده:
Login
↓
Authentication
↓
Session
↓
Session Identifier
↓
Cookie
↓
Browser
در درخواست بعدی مرورگر Cookie مرتبط را ارسال میکند و برنامه میتواند Session مربوط به کاربر را پیدا کند.
بنابراین درک Cookie برای درک Authentication در Laravel نیز اهمیت دارد.
# HttpOnly Cookie چیست؟
یکی از ویژگیهای مهم Cookie، HttpOnly است.
وقتی Cookie با ویژگی HttpOnly تنظیم شود، JavaScript سمت مرورگر نمیتواند مستقیماً آن Cookie را از طریق APIهای معمول Cookie مانند document.cookie بخواند.
این ویژگی میتواند ریسک دسترسی اسکریپتهای مخرب به Cookie را کاهش دهد.
اما باید توجه داشت:
HttpOnly بهتنهایی امنیت کامل Cookie را تضمین نمیکند.
امنیت Cookie به مجموعهای از تنظیمات و معماری امنیتی برنامه وابسته است.
# Secure Cookie چیست؟
ویژگی Secure باعث میشود Cookie فقط از طریق اتصال امن HTTPS ارسال شود.
بهصورت مفهومی:
Secure Cookie
↓
HTTPS
↓
Browser ↔ Server
در سایتهای Production که HTTPS فعال است، استفاده صحیح از Secure Cookie یکی از ملاحظات مهم امنیتی است.
# SameSite Cookie چیست؟
ویژگی SameSite مشخص میکند مرورگر Cookie را در چه شرایطی و در ارتباط با درخواستهای Cross-Site ارسال کند.
مقادیر رایج آن عبارتاند از:
Strict
Lax
None
انتخاب مقدار مناسب به معماری سایت و نحوه تعامل آن با دامنههای دیگر بستگی دارد.
برای مثال اگر سایت شما با سرویسهای خارجی، دامنههای متفاوت یا سیستمهای احراز هویت خاص کار میکند، تنظیم SameSite اهمیت بیشتری پیدا میکند.
# چرا تنظیمات SameSite مهم است؟
فرض کنید سایت شما با چند دامنه یا سرویس خارجی تعامل دارد.
اگر Cookie بهدرستی تنظیم نشده باشد، ممکن است در بعضی درخواستها مرورگر Cookie را ارسال نکند.
این موضوع میتواند باعث مشکلاتی مانند:
- خارج شدن کاربر از حساب
- کار نکردن بعضی درخواستها
- مشکل در Authentication
- مشکل در سیستمهای Cross-Site
شود.
بنابراین هنگام طراحی Authentication یا سیستمهای چنددامنهای، Cookie Policy مرورگر باید در نظر گرفته شود.
# Cookie Encryption در Laravel
Laravel برای Cookieهای معمولی خود مکانیزمهایی برای محافظت از داده Cookie در اختیار برنامه قرار میدهد.
در پروژههای Laravel، نباید تصور کنید Cookie صرفاً یک رشته ساده است که بدون هیچ پردازشی به مرورگر ارسال میشود.
Laravel میتواند Cookieها را از طریق Middleware مربوط به Cookie پردازش کند.
با این حال:
نباید صرفاً به دلیل وجود رمزنگاری، هر نوع اطلاعات محرمانهای را داخل Cookie ذخیره کنید.
دادهای که اصلاً نباید در سمت کاربر باشد، بهتر است از ابتدا در سمت سرور نگهداری شود.
# چه اطلاعاتی را نباید داخل Cookie ذخیره کنیم؟
Cookie برای اطلاعات کوچک و مناسب سمت Client طراحی شده است.
بنابراین از ذخیره موارد زیر در Cookie خودداری کنید:
Password
Private Key
اطلاعات بانکی حساس
اطلاعات بسیار محرمانه
دادههای حجیم
اطلاعاتی که تغییرات بسیار زیادی دارند
برای مثال به جای:
cookie('user_data', $largeUserObject);
بهتر است داده اصلی در Database باشد و در صورت نیاز فقط یک مقدار کوچک و غیرحساس یا شناسه مناسب نگهداری شود.
# محدودیت حجم Cookie
Cookie برای ذخیره اطلاعات حجیم طراحی نشده است.
مرورگرها برای Cookie محدودیتهایی در اندازه دارند و علاوه بر آن، Cookie در بسیاری از درخواستهای مربوط به دامنه همراه Request ارسال میشود.
بنابراین اگر Cookieهای بزرگی ایجاد کنید، ممکن است حجم اضافی به درخواستهای HTTP تحمیل شود.
به همین دلیل:
Cookie را کوچک نگه دارید.
# Cookie و Performance
فرض کنید سایت شما Cookie بسیار بزرگی دارد.
اگر این Cookie در درخواستهای متعدد ارسال شود، بخشی از حجم HTTP Request را اشغال میکند.
در سایتهایی با تعداد درخواست زیاد، این موضوع میتواند به سربار غیرضروری تبدیل شود.
پس اطلاعاتی مانند:
theme
locale
small preference
برای Cookie منطقیتر از دادههای حجیم هستند.
# Cookie در Laravel Middleware
Laravel برای پردازش Cookie از Middlewareهای مرتبط با Cookie استفاده میکند.
در چرخه درخواست، Cookie میتواند:
Request
↓
Middleware
↓
Controller
↓
Response
↓
Cookie
پردازش شود.
این موضوع به شما اجازه میدهد Cookie را به شکل استاندارد در چرخه Request/Response Laravel مدیریت کنید.
# مثال عملی؛ ذخیره حالت Dark Mode
فرض کنید در سایت یک دکمه برای تغییر Dark Mode داریم.
وقتی کاربر حالت تاریک را انتخاب میکند:
public function darkMode()
{
return redirect()
->back()
->withCookie(
cookie('theme', 'dark', 60 * 24 * 30)
);
}
سپس در بخش دیگری از برنامه:
$theme = request()->cookie('theme', 'light');
اگر Cookie وجود داشته باشد:
dark
و اگر وجود نداشته باشد:
light
دریافت میشود.
# مثال عملی؛ حذف تنظیم Theme
اگر کاربر بخواهد تنظیم Theme را حذف کند:
use Illuminate\Support\Facades\Cookie;
public function resetTheme()
{
return redirect()
->back()
->withCookie(
Cookie::forget('theme')
);
}
اکنون Cookie مربوط به Theme حذف خواهد شد.
# مثال عملی؛ Cookie برای زبان سایت
یک Controller ساده:
use Illuminate\Http\Request;
class LanguageController
{
public function set(Request $request, string $locale)
{
return redirect()
->back()
->withCookie(
cookie('locale', $locale, 60 * 24 * 30)
);
}
public function current(Request $request)
{
return $request->cookie('locale', 'fa');
}
}
در اینجا:
locale = fa
میتواند بهعنوان زبان پیشفرض ذخیره شود.
# Cookie و چند دامنه
در پروژههایی که چند Subdomain یا Domain دارند، تنظیمات Cookie اهمیت بیشتری پیدا میکند.
مثلاً:
portal.example.com
app.example.com
api.example.com
اگر بخواهید Cookie بین بعضی Subdomainها استفاده شود، Domain Cookie باید بهدرستی تنظیم شود.
این موضوع در پروژههایی که چند Application یا چند Subdomain دارند بسیار مهم است.
# Cookie در پروژههای چندسروره
Cookie در سمت Browser نگهداری میشود، بنابراین برخلاف File Session، یک Cookie معمولی به Storage محلی یک Application Server وابسته نیست.
مثلاً:
Load Balancer
|
---------------------
| |
Server 1 Server 2
| |
------ Browser ------
Browser Cookie را نگهداری میکند و آن را در درخواستهای مناسب ارسال میکند.
اما اگر Cookie حاوی شناسه Session باشد، خود Session همچنان باید در Storage مناسب و قابل دسترس برای سرورهای مختلف قرار داشته باشد.
این تفاوت در معماریهای چندسروره بسیار مهم است.
# Cookie و CSRF
Cookie در سیستمهای Web میتواند با موضوع CSRF نیز ارتباط داشته باشد.
در برنامههایی که Authentication مبتنی بر Cookie دارند، باید مکانیزمهای محافظت در برابر CSRF بهدرستی پیادهسازی شوند.
Laravel ابزارهای داخلی برای مدیریت CSRF در اختیار توسعهدهنده قرار میدهد.
به همین دلیل نباید صرفاً به وجود Cookie برای امنیت درخواستها اکتفا کرد.
# Cookie و XSS
اگر یک مهاجم بتواند JavaScript مخرب را در صفحه شما اجرا کند، بسته به تنظیمات Cookie و معماری برنامه ممکن است بتواند به برخی اطلاعات سمت Client دسترسی پیدا کند.
به همین دلیل ویژگیهایی مانند:
HttpOnly
Secure
SameSite
و همچنین جلوگیری از XSS اهمیت زیادی دارند.
امنیت Cookie فقط یک تنظیم نیست؛ بلکه بخشی از امنیت کلی Application است.
# بهترین روشها برای استفاده از Cookie در Laravel
برای استفاده صحیح از Cookie در پروژههای Laravel این نکات را در نظر بگیرید:
۱. Cookie را کوچک نگه دارید
اطلاعات غیرضروری داخل Cookie قرار ندهید.
۲. اطلاعات حساس را سمت Client ذخیره نکنید
اگر دادهای واقعاً محرمانه است، ابتدا بررسی کنید آیا اصلاً باید در Browser قرار بگیرد یا خیر.
۳. HTTPS را در Production فعال کنید
Cookieهای حساس باید با سیاست امنیتی مناسب و اتصال HTTPS استفاده شوند.
۴. HttpOnly را برای Cookieهای مناسب فعال نگه دارید
این کار میتواند دسترسی JavaScript به Cookie را محدود کند.
۵. SameSite را متناسب با معماری انتخاب کنید
بهخصوص در سیستمهای Authentication و Cross-Site.
۶. به Domain و Path توجه کنید
Cookie باید برای محدودهای که واقعاً به آن نیاز دارید تنظیم شود.
۷. Cookie را جایگزین Database نکنید
Cookie برای دادههای کوچک سمت Client است، نه نگهداری دیتای اصلی Application.
# تفاوت Cookie، Session و Cache
این سه مفهوم گاهی با یکدیگر اشتباه گرفته میشوند.
| ویژگی | Cookie | Session | Cache |
|---|---|---|---|
| هدف اصلی | نگهداری اطلاعات سمت Client | حفظ وضعیت کاربر بین درخواستها | نگهداری موقت داده برای افزایش سرعت |
| محل ذخیره | Browser | وابسته به Driver | وابسته به Cache Driver |
| مناسب برای تنظیمات کاربر | بله | بله | معمولاً نه |
| مناسب برای Authentication | میتواند بخشی از آن باشد | بسیار رایج | خیر |
| هدف اصلی Performance | خیر | خیر | بله |
| قابل ارسال همراه Request | بله | معمولاً با سازوکار Session Cookie | خیر |
در نتیجه نباید این سه مفهوم را جایگزین یکدیگر در نظر گرفت.
# چه زمانی از Cookie استفاده کنیم؟
Cookie انتخاب مناسبی است وقتی که:
- داده کوچک است.
- داده برای Browser کاربرد دارد.
- اطلاعات حساس نیست یا به شکل مناسب محافظت میشود.
- لازم است در درخواستهای بعدی قابل دسترس باشد.
- داده مربوط به ترجیحات کاربر است.
مثلاً:
theme
locale
small preferences
# چه زمانی از Session استفاده کنیم؟
Session زمانی مناسبتر است که:
- اطلاعات مربوط به وضعیت نشست کاربر است.
- داده نباید مستقیماً در Client نگهداری شود.
- برنامه نیاز به حفظ وضعیت بین درخواستها دارد.
- اطلاعات موقت کاربر باید سمت Server مدیریت شود.
مثلاً:
cart identifier
authentication state
flash messages
temporary workflow state
# چه زمانی از Database استفاده کنیم؟
اگر اطلاعات:
- دائمی است،
- حجیم است،
- بخش اصلی Business Logic است،
- نیاز به Query دارد،
- باید رابطه داشته باشد،
بهتر است در Database ذخیره شود.
مثلاً اطلاعات:
User
Product
Order
Invoice
Payment
Article
نباید صرفاً در Cookie یا Session نگهداری شوند.
# جمعبندی
Cookie در Laravel یکی از مفاهیم مهم برای توسعه برنامههای Web است.
Laravel ابزارهای مختلفی برای ایجاد، خواندن و حذف Cookie در اختیار توسعهدهنده قرار میدهد.
برای ایجاد Cookie میتوان از:
response()->cookie()
یا:
Cookie::make()
استفاده کرد.
برای خواندن Cookie:
$request->cookie('name');
و برای حذف آن:
Cookie::forget('name');
از طرف دیگر، Cookie با Session ارتباط نزدیکی دارد، اما این دو مفهوم یکسان نیستند.
Cookie معمولاً در Browser نگهداری میشود، در حالی که Session میتواند بر اساس Driver انتخابشده در File، Database، Redis یا Storageهای دیگر مدیریت شود.
در پروژههای واقعی، مهمترین اصل این است که Cookie را کوچک نگه دارید، اطلاعات حساس را بدون دلیل در Client قرار ندهید و تنظیمات امنیتی مانند:
HttpOnly
Secure
SameSite
را متناسب با معماری برنامه در نظر بگیرید.
# سوالات متداول درباره Cookie در Laravel
Cookie در Laravel چیست؟
Cookie اطلاعات کوچکی است که میتواند توسط Server برای Browser ارسال شود و Browser آن را برای درخواستهای بعدی نگهداری کند.
چگونه در Laravel Cookie ایجاد کنیم؟
مثلاً:
return response('OK')
->cookie('theme', 'dark', 60);
چگونه Cookie را در Laravel بخوانیم؟
از Request:
$theme = $request->cookie('theme');
چگونه Cookie را حذف کنیم؟
با Cookie::forget():
return response('OK')
->withCookie(
Cookie::forget('theme')
);
آیا Cookie و Session یکی هستند؟
خیر. Cookie معمولاً در Browser ذخیره میشود، اما Session یک مکانیزم مدیریت وضعیت است که Storage آن میتواند متفاوت باشد.
آیا میتوان Password را داخل Cookie ذخیره کرد؟
خیر. ذخیره Password یا سایر اطلاعات بسیار حساس در Cookie روش مناسبی نیست.
HttpOnly چیست؟
HttpOnly قابلیتی است که دسترسی JavaScript سمت Browser به Cookie را محدود میکند و میتواند بخشی از سیاست امنیتی Cookie باشد.
Secure Cookie چیست؟
Cookie با ویژگی Secure باید از طریق اتصال امن HTTPS ارسال شود.
SameSite چیست؟
SameSite سیاستی برای کنترل ارسال Cookie در شرایط Cross-Site است و مقادیر رایج آن شامل Strict، Lax و None هستند.





