CORS policies چیست
CORS مخفف Cross-Origin Resource Sharing هست، و به سیاستهایی اشاره داره که مشخص میکنن یک مرورگر اجازه داره از یک دامنه (origin) به منابعی در یک دامنه دیگه درخواست ارسال کنه یا نه.
📌 چرا CORS وجود داره؟
به دلایل امنیتی، مرورگرها به صورت پیشفرض اجازه نمیدن که اسکریپتهایی که از یک منبع (مثلاً site-a.com) بارگذاری شدن، به منابع محافظتشده در منبعی دیگه (مثلاً api.site-b.com) دسترسی داشته باشن.
این یعنی بدون تنظیمات CORS، مرورگر جلوی درخواستهایی مثل fetch(‘https://api.site-b.com/data’) از دامنهی site-a.com رو میگیره.
📤 سیاستهای CORS یعنی چی؟
سروری که قراره به درخواست پاسخ بده باید با هدرهایی خاص اعلام کنه که اجازه این نوع درخواست رو میده.
مثلاً این هدرها:
Access-Control-Allow-Origin: https://site-a.com
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
اگر این هدرها وجود داشته باشن، مرورگر اجازه میده درخواست انجام بشه.
🛑 بدون CORS چه اتفاقی میافته؟
اگر CORS تنظیم نشده باشه یا محدود باشه:
- مرورگر درخواست رو ارسال میکنه (گاهی با روش OPTIONS که بهش preflight میگن).
- اما اگر پاسخ سرور شامل هدرهای درست نباشه، مرورگر پاسخ رو بلاک میکنه.
✅ راهحل برای توسعهدهندگان:
- در سمت سرور، باید هدرهای Access-Control-* رو اضافه کنن.
- در فریمورکهایی مثل Node.js/Express، PHP، Django یا Laravel، این کار خیلی رایجه.
- برای تست محلی هم میشه از افزونههای مرورگر یا پراکسیها استفاده کرد.