شرح صفوف ومحتوى الفقرة
عندما تعمل الواجهة الأمامية على نطاق مختلف (مثل https://app.example.com) عن نطاق خادم PHP API (https://api.example.com)، يفرض المتصفح سياسة مشاركة الموارد العابرة للمجالات (CORS).
- أرسل الرأس
Access-Control-Allow-Origin: https://app.example.com، وتجنب استخدام النجمة*في المسارات التي تتطلب مصادقة. - ترسل المتصفحات طلب استكشاف مسبق بطريقة
OPTIONS(Preflight) قبل إرسال طلباتPOSTبصيغة JSON عبر النطاقات. - عندما تكون طريقة الطلب
$_SERVER["REQUEST_METHOD"] === "OPTIONS"، أرسل رؤوس CORS المسموحة واضبط الرمز204وأنهِ التنفيذ فوراً.
يتيح فحص النطاق $origin مقابل قائمة بيضاء محددة السماح لعدة واجهات موثوقة دون فتح الـ API للمواقع المجهولة.
PHP
<?php
$allowedOrigins = ['https://app.closetag.com', 'http://localhost:3000'];
$origin = 'https://app.closetag.com';
if (in_array($origin, $allowedOrigins, true)) {
echo "Access-Control-Allow-Origin: $origin\n";
echo "Access-Control-Allow-Methods: GET, POST, OPTIONS\n";
echo "Access-Control-Allow-Headers: Content-Type, Authorization\n";
}