CORS چیست؟
مکانیزم مرورگر که مشخص میکند یک صفحه وب از یک Origin (دامنه) اجازه دارد به منابع یک Origin دیگر درخواست بزند یا نه.
چرا مهم است؟
وقتی فرانتاند (مثلاً روی app.example.com) و API (روی api.example.com) دامنههای متفاوت دارند، بدون تنظیم درست CORS مرورگر درخواست را مسدود میکند — یکی از رایجترین خطاهای اولین اتصال Frontend/Backend.
تعریف
CORS (Cross-Origin Resource Sharing) یک مکانیزم امنیتی مرورگر است (نه سرور)؛ بهطور پیشفرض یک صفحه وب فقط اجازه دارد به همان Origin (پروتکل+دامنه+پورت) که از آن بارگذاری شده درخواست AJAX بزند، مگر سرور مقصد صریحاً اجازه دهد.
مثال تنظیم در ASP.NET Core
builder.Services.AddCors(options =>
{
options.AddPolicy("Frontend", policy =>
policy.WithOrigins("https://app.example.com")
.AllowAnyHeader()
.AllowAnyMethod());
});
app.UseCors("Frontend");
نکات مهم
- CORS جلوی درخواست سرور به سرور (مثل یک سرویس Backend دیگر) را نمیگیرد — فقط محدودیت مرورگر روی کد جاوااسکریپت است.
AllowAnyOrigin()همراه باAllowCredentials()مجاز نیست (خطای Runtime) چون امنیتی بیمعناست.
اشتباه رایج
❌ استفاده از AllowAnyOrigin() در Production برای «راحتی» رفع خطای CORS — این عملاً محدودیت CORS را کاملاً غیرفعال میکند؛ همیشه دامنههای مجاز را صریح لیست کنید.
منبع و مطالعه بیشتر
خلاصه
CORS یک محدودیت سمت مرورگر است که درخواست بین دامنههای متفاوت را کنترل میکند و باید صریح در سرور با دامنههای مجاز پیکربندی شود. از AllowAnyOrigin در Production خودداری کنید. مرجع کامل: راهنمای CORS در ASP.NET Core، Microsoft Learn.
