الحصول على اسم النطاق في قائمة WHITELIST لـ CORS وأنه فارغ
تُعتبر سياسة الوصول المنسق (CORS) من الموضوعات الحيوية في تطوير الويب، حيث تتيح للمتصفحات التحكم في كيفية استجابة الخادم لمطالبات الوصول من مواقع مختلفة. أحد الجوانب المهمة في هذه السياسة هو التحقق من الأصل (Origin) الخاص بالمطالبات وإعداد قوائم بيضاء للمواقع المسموح لها بالوصول إلى الموارد. في هذه المقالة، سنتناول موضوع "Get origin $_SERVER[‘HTTP_ORIGIN’] cors whitelist domain name get origin is null؟"، ونحلل الأسباب التي قد تجعل قيمة المتغير $origin
تساوي null
.
فهم HTTP_ORIGIN وأهميته
عند القيام بمطالبة عبر XMLHttpRequest أو Fetch API، يقوم المتصفح بإرسال معلومات حول الأصل، وهو ما يُعرف بـ HTTP_ORIGIN
. تستخدم هذه المعطيات لتحديد المصدر الأصلي للمطلب ومساعدتنا في اتخاذ قرارات حول ما إذا كان يجب السماح أو منع الوصول. إذا كان $origin
يُعيد قيمة null
، فهذا يعني أن الطلبات قد تأتي من أصل غير مصرح به.
ما هي أسباب الحصول على قيمة null لـ $origin؟
هناك عدة أسباب يمكن أن تؤدي إلى حصولنا على قيمة null
عند استدعاء $_SERVER['HTTP_ORIGIN']
، من بينها:
-
البروتوكول المستخدم: إذا تم تقديم الطلب عبر بروتوكول غير آمن مثل
file://
، فلن يرسل المتصفح قيمةHTTP_ORIGIN
. -
طلبات الخادم المباشر: في بعض الأحيان، عندما يتم إرسال طلب من جانب الخادم إلى الخادم، قد لا يتم تضمين رأس
HTTP_ORIGIN
. -
الإعدادات في المتصفح: بعض المتصفحات أو الامتدادات قد تمنع إرسال رأس
HTTP_ORIGIN
للحفاظ على الخصوصية والأمان. - الطلبات المرسلة من الأدوات غير المرتبطة بالويب: عند استخدام أدوات مثل cURL، قد لا يتم ملء رأس
HTTP_ORIGIN
تلقائيًا.
إعداد رأس CORS بالشكل الصحيح
لتجنب مشكلات الوصول، من المهم ضمان إعداد الرؤوس بشكل صحيح. الكود المذكور في المقال يتضمن عدة أسطر تقنيّة لضبط رؤوس CORS:
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : null;
header("Access-Control-Allow-Origin: $allowed_domain");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, Accept, Authorization");
header("X-Frame-Options: ALLOW-FROM $origin");
header("Content-Security-Policy: frame-ancestors 'self' $allowed_domain");
في هذا الكود، يتم استخدام isset()
للتحقق مما إذا كانت قيمة $_SERVER['HTTP_ORIGIN']
موجودة. إذا لم تكن موجودة، سيُعين $origin
قيمة null
.
كيف يمكن حل مشكلة null؟
إذا كنتم تواجهون مشكلة في الحصول على قيمة صحيحة لمتغير $origin
، يمكن النظر في اتباع بعض الخطوات:
-
التأكد من مصدر الطلب: تحققوا من كيفية وإلى أين تُرسل الطلبات. يمكن استخدام أدوات مثل DevTools لمراقبة شبكة الطلبات.
-
تحديث إعدادات الخادم: تأكدوا من أن الخادم مُعد بشكل يسمح بإرسال المعلومات الصحيحة للرؤوس.
- تعديل إعدادات المتصفح: تأكدوا من عدم وجود إضافات قد تعطّل إرسال رأس
HTTP_ORIGIN
.
الخلاصة
إن محاولة الحصول على قيمة مهنية لـ $origin
من $_SERVER['HTTP_ORIGIN']
هي خطوة حاسمة في إعداد تنفيذ سياسة CORS بشكل صحيح. إذا كنتم تواجهون مشكلة "Get origin $_SERVER[‘HTTP_ORIGIN’] cors whitelist domain name get origin is null؟"، فمن المهم فهم الأسباب المحتملة وراء ذلك وتجربة الحلول المقترحة. باستخدام الممارسات الصحيحة، يمكنكم ضمان أن تطبيقاتكم الويب تعمل بشكل آمن وسلس عبر مختلف النطاقات.