سؤال وإجابة

إيه سبب خطأ CORS عند ربط API؟

الإجابة المختصرة

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

حدّد أين فشل الطلب

افتح Network واختر الطلب المتأثر ثم راجع عنوانه والطريقة ورمز الاستجابة. قد ترى طلب OPTIONS قبل الطلب الأساسي، أو تحويلًا إلى تسجيل الدخول، أو خطأ خادم لا يحمل رؤوس CORS. كلمة CORS في Console لا تعني بالضرورة أن الخدمة تعمل وأن رأسًا واحدًا ناقص؛ ابدأ بفحص الاستجابة الفعلية مع مسؤول API.

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

افحص الطلب المسبق

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

  1. سجل Origin والطريقة والرؤوس المرسلة، دون نسخ Authorization أو أسرار إلى تذكرة عامة.
  2. راجع Access-Control-Allow-Origin في الاستجابة النهائية. لا ترسل قائمة أصول مفصولة بفواصل كبديل غير صحيح.
  3. إذا كان الطلب يحتاج credentials فراجع السماح بها والأصل المحدد؛ wildcard ليس حلًا عامًا لهذه الحالة.
  4. اختبر استجابات النجاح والخطأ والتحويل، لأن إعداد الرؤوس على مسار النجاح فقط قد يترك أعطالًا يصعب تفسيرها.

لماذا لا نستخدم no-cors كحل؟

تحويل fetch إلى وضع no-cors لا يمنح JavaScript حق قراءة رد خدمة لا تسمح له. قد تنتهي باستجابة معتمة لا تستطيع استخدامها في التطبيق، فتختفي رسالة معينة وتبقى الوظيفة معطلة. وإضافة رؤوس السماح إلى الطلب من المتصفح لا تستبدل قرار السماح الذي ينبغي أن يصدر عن الخادم.

مثال معماري: خدمة خارجية تقبل فقط اتصال خادم موثوق بمفتاح سري. الحل قد يكون نقطة تكامل على خادمك تتحقق من المستخدم والمدخلات وتستدعي الخدمة. لا تحوّلها إلى وكيل عام يقبل أي عنوان URL، ولا تخزن المفتاح في حزمة الواجهة. يحتاج الوكيل تحديد وجهات وصلاحيات وحدود طلبات، وليس مجرد تمرير الرد لإسكات الخطأ.

تحقق من المعالجة

أعد الاختبار من الأصل المسموح ومن أصل غير مسموح، وبحساب مصرح وآخر غير مصرح. CORS لا يقوم مقام تسجيل الدخول أو التحقق من صلاحية العملية؛ يمكن لعملاء غير المتصفح الاتصال بالخدمة وفق بروتوكولها. لذلك أصلح سياسة المتصفح دون إزالة الحماية الفعلية على البيانات.

سجّل نسخة إعداد الخادم والمسارات التي طبقت عليها التغيير، وافحص أثر CDN أو التخزين المؤقت إذا كانت الاستجابة تختلف حسب Origin. لا تستخدم إضافة متصفح تتجاوز السياسة كدليل نجاح للمستخدمين؛ الاختبار المعتمد ينبغي أن ينجح في متصفح عادي دون امتيازات خاصة.

الخدمة المتعلقة

ربط ووردبريس بالأنظمة وAPI تكامل WordPress وWooCommerce مع CRM وERP وبوابات الدفع والشحن: مخطط تدفق بيانات، webhooks موقّعة، إعادة محاولة ومنع تكرار، سجل أخطاء، واختبار حالات الفشل. تفاصيل الخدمة

مصادر للرجوع إليها

لديك مشروع في بالك؟

دعني أساعدك في تطوير موقعك أو متجرك

سواء كنت تحتاج إلى موقع ووردبريس أو متجر شوبفاي أو تحسين السرعة والأداء، أخبرني عن مشروعك وأحدد معك الخطوة المناسبة.

أضف تعليقًا أو استفسارًا

يظهر تعليقك بعد الموافقة عليه. لن يُنشر بريدك الإلكتروني. لا ترسل كلمات مرور أو بيانات عملاء.