رفع خطای CORS در برنامه‌های Laravel


خطای CORS (Cross-Origin Resource Sharing) یک محدودیت امنیتی در مرورگرها است که جلوی درخواست‌های HTTP از منابع مختلف را می‌گیرد. این خطا ممکن است زمانی رخ دهد که سعی کنید از یک دامنه یا پورت متفاوت به سروری دیگر درخواست ارسال کنید، و معمولاً با پیام خطایی شبیه به Access-Control-Allow-Origin در مرورگر مواجه خواهید شد. در ادامه، به رفع این خطا در فریم‌ورک‌های مختلف، پرداخته شده است:

برای حل این مشکل می‌توانید از راه حل‌‌های قرار داده شده، استفاده کنید.

تنظیم فایل config/cors.php

لاراول از نسخه 11 به بعد به صورت built-in از CORS پشتیبانی می‌کند. شما می‌توانید تنظیمات CORS را در مسیر config/cors.php، شخصی‌سازی کنید. برای شخصی‌سازی این فایل، در ابتدا بایستی با دستور زیر، آن را publish کنید:

کپی
php artisan config:publish cors

سپس فایل پیکربندی را ویرایش کنید تا درخواست‌های همه دامنه‌ها، متدها و هدرها را مجاز کنید:

کپی
return [
    'paths' => ['api/*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*'],
    'allowed_headers' => ['*'],
];

این تنظیمات به شما اجازه می‌دهند که درخواست‌ها از هر دامنه‌ای پذیرفته شوند و مشکلات CORS رفع شود.

ایجاد Middleware

یک روش دیگر برای کنترل بهتر درخواست‌های CORS این است که یک Middleware برای آن ایجاد کنید. این کار به شما این امکان را می‌دهد تا هدرهای خاص را تعریف کنید. برای ایجاد Middleware، در ابتدا دستور زیر را اجرا کنید:
کپی
php artisan make:middleware Cors
سپس، در فایل app/Http/Middleware/Cors.php، هدرهای مورد نیاز برای CORS را به این صورت اضافه کنید:
کپی
return $next($request)
    ->header('Access-Control-Allow-Origin', '*')
    ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
    ->header('Access-Control-Allow-Headers', 'Content-Type, X-Auth-Token, Authorization');
این روش به شما کنترل بیشتری بر روی درخواست‌های CORS می‌دهد​.