search icon
در حال جستجو...

رفع خطای Access-Control-Allow-Origin (CORS) در php

خطای Access-Control-Allow-Origin متوقف‌ کنندهٔ امنیتی مرورگرها برای جلوگیری از دسترسی غیرمجاز وب‌سایت‌ها به منابع یکدیگر است.

این خطا زمانی رخ می‌دهد که مرورگر شما بخواهد از یک دامنه، پروتکل یا پورت متفاوت به سروری دیگر درخواست (HTTP Request) ارسال کند.

در این حالت، مرورگر برای حفظ امنیت، ابتدا بررسی می‌کند که آیا آدرس مقصد اجازه دسترسی به این آدرس را صادر کرده است یا خیر.

اگر آدرس مقصد هدر Access-Control-Allow-Origin را در پاسخ خود نفرستاده باشد یا آدرس مبدا در آن تعریف نشده باشد، مرورگر جلوی دریافت اطلاعات را می‌گیرد و این خطا را نمایش می‌دهد.

برای مثال، اگر Frontend روی:

https://example.com

و API روی:

https://api.example.com

قرار داشته باشد، مرورگر بررسی می‌کند که آیا API اجازه دریافت درخواست از https://example.com را دارد یا خیر. در صورت عدم اجازه، خطایی مانند زیر نمایش داده می‌شود:

Access to fetch ... has been blocked by CORS policy

 

رفع خطا در PHP 

برای رفع خطای CORS در آیتم های php می‌توانید تنظیمات را از طریق فایل .htaccess انجام دهید.

فایل .htaccess را در مسیر اصلی پروژه ایجاد یا ویرایش کنید و تنظیمات زیر را به آن اضافه کنید:

<IfModule mod_headers.c>
    Header always set Access-Control-Allow-Origin "https://example.com"
    Header always set Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
    Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
</IfModule>

در این تنظیمات، مقدار https://example.com را با دامنه Frontend خود جایگزین کنید.

اگر می‌خواهید درخواست‌ها از تمام دامنه ها مجاز باشند، می‌توانید مقدار Access-Control-Allow-Origin را به شکل زیر تغییر دهید:

Header always set Access-Control-Allow-Origin "*"

نکته: استفاده از Access-Control-Allow-Origin “*” در محیط Production معمولاً توصیه نمی‌شود. بهتر است فقط دامنه‌های موردنیاز را مشخص کنید.