ابدأ بفصل أمرين تغيّرا في الوقت نفسه: مسار الشبكة وتطبيق المتصفح. يغيّر VPN عنوان الخروج، لكنه لا يغيّر منشأ الصفحة، فهو مبني من المخطط والمضيف والمنفذ. إذا نجح الطلب الآن، فقد تغيّر شيء في الاستجابة، أو تغيّر الطلب نفسه. وتحديد أيّهما هو التحقيق كله.

CORS بروتوكول رؤوس يطبّقه المتصفح، لذا لا شيء على مسار الشبكة يمكنه تعطيله.

المنشأ ليس عنوان IP

المنشأ هو مخطط ومضيف ومنفذ. وهو ليس العنوان الذي تغادره الحزم، وليس عنوان IP الذي يراه الخادم. لذلك يستطيع VPN تغيير كل عنوان قابل للملاحظة وترك المنشأ كما هو. يقارن المتصفح Access-Control-Allow-Origin في الاستجابة بمنشأ الصفحة، ولا يدخل عنوان الخروج في تلك المقارنة أبدًا.

لذا فإن إضافة أو وسيطًا يبدو أنه يصلح خطأ CORS يفعل شيئًا آخر: يعيد كتابة الرؤوس، أو يوجّه الطلب بحيث لا يبقى عبر المنشأ. ولا أيٌّ منهما خاصية من خصائص VPN.

ما يرسله المتصفح فعلًا

في طلب عبر المنشأ ليس بسيطًا، يرسل المتصفح أولًا طلب فحص مسبق OPTIONS يحمل الطريقة والرؤوس المقصودة. وعلى الخادم أن يجيب بالأذونات التي يسمح بها، ولا يتبع الطلب الحقيقي إلا إذا استوفت تلك الإجابة القواعد. يغيّر VPN المسار الذي يحمل التبادلين ويمكنه تغيير ما تجيب به الخدمات الوسيطة. لكنه لا يغيّر سلسلة المنشأ ولا شرط الفحص المسبق.

عادةً لا يُظهر عميل سطر الأوامر شيئًا من ذلك. فقد لا يرسل رأس Origin، وكثيرًا ما يتجاوز الفحص المسبق، وقد يحمل بيانات اعتماد مختلفة. والجسم الذي يعود إلى curl يثبت أن الخادم أجاب curl.

اعثر على الاستجابة التي تغيّرت

قارن الاستجابة الفعلية عبر كل مسار، لا رمز الحالة فقط. انظر إلى الرؤوس الحاملة لأذونات CORS، ونوع المحتوى، وأي إعادة توجيه، وما إذا كان WAF أو نسخة CDN قد أنتجت صفحة مختلفة. فالرفض الإقليمي أو إعادة توجيه المصادقة أو صفحة خطأ تفتقر إلى رأس الإذن كلها تفشل في المتصفح بينما تبدو كخطأ CORS. تلك فروق في مسار التسليم، وهي ما يجب توثيقه.

سجّل رؤوس الاستجابة من المسارين وقارنها سطرًا بسطر. فإن كان الفرق الوحيد هو غياب Access-Control-Allow-Origin في صفحة خطأ واحدة، فقد وجدت السبب.

أصلح الخدمة، لا التطبيق

حين تكون الخدمة لك، صرّح بالمناشئ المسموح بها وميزات الطلب صراحةً، ثم اقرأ الأخطاء التي ينتجها واجهتها الأمامية والوسطاء. وإن لم تفعل، فأرسل إلى مالك الخدمة مقارنة منقّحة. لا تُدرج أبدًا ملفات تعريف الارتباط أو رؤوس التفويض أو صادرات الجلسة في ذلك التقرير، لأنها بيانات الاعتماد التي وُجدت السياسة لحمايتها.

تجنّب إضافات المتصفح التي تعطّل CORS. فهي تغيّر الحدود الأمنية بينما تخفي فرق الاستجابة الذي كان يحتاج إلى تفسير، وتُبقي الفشل نفسه عند كل مستخدم آخر.

سجّل كلتا الاستجابتين والمنشأ المستخدم والمسار المسلوك. ذلك السجل يحوّل شائعة عن VPN إلى خطأ في الخدمة.

مقالات ذات صلة