ما هو طلب المجال المتقاطع؟
الفهم البسيط هو تقديم طلب إلى ملف خادم ليس في نفس اسم المجال. دعنا نستخدم مثالًا عمليًا لتوضيح ذلك. على سبيل المثال ، يرسل Baidu.com طلبًا إلى cxyblog.com. أسماء النطاق مختلفان. لذلك هذا هو المجال المتقاطع. لأسباب أمنية ، هذا غير مسموح به. تجدر الإشارة أيضًا إلى أن الطلبات التي ترسلها نطاقات فرعية مختلفة ، أو منافذ مختلفة لنفس المجال ، أو بروتوكولات مختلفة لنفس المجال ، تعتبر أيضًا مجالًا متقاطعًا ، ويمكن تصنيفها بشكل أساسي في الفئات التالية:
(1) http://www.baidu.com يرسل طلبًا إلى http://www.cxyblog.com
(2) http://www.cxyblog.com يرسل طلبًا إلى http://image.cxyblog.com
(3) http://www.baidu.com:8000 أرسل طلبًا إلى http://www.cxyblog.com
(4) http://www.cxyblog.com يرسل طلبًا إلى https://www.cxyblog.com
(5) http://www.cxyblog.com يرسل طلبًا إلى http://112.65.242.67 (على افتراض أن IP المقابل لاسم المجال www.cxyblog.com هو 112.65.242.67)
جميع المواقف الخمسة المذكورة أعلاه هي طلبات عبر المجال.
متى سيتم استخدام طلبات المجال المتقاطع؟
في بعض الأحيان عندما نحتاج إلى استخدام JavaScript لأداء عمليات Ajax ، سنواجه هذا النوع من عمليات طلب المجال المتقاطع.
لماذا لا يمكن تنفيذ طلب المجال المتقاطع مباشرة باستخدام JavaScript؟
بسبب الأسباب الأمنية ، لا يسمح المتصفح JavaScript بطلب موارد متعددة المجال بسبب قيود السياسة المتجانسة لجافا سكريبت.
كيف تحل المشكلة التي لا تستطيع JavaScript تنفيذ طلبات النطاق المتقاطع؟
الحل المستخدم في هذه المقالة هو استخدام FlyJSONP لتنفيذ طلبات المجال المتقاطع. Flyjsonp هي مكتبة فئة JavaScript خفيفة الوزن ، تُعرف أيضًا باسم JSON Plug. يبلغ الحجم الكلي بعد الضغط حوالي 3 كيلو بايت ، ولا يلزم دعم أي أطر أخرى.
عنوان الموقع الرسمي Flyjsonp: http://alotaiba.github.com/flyjsonp/
إذن كيفية استخدام مكتبة فئة FlyJSONP لتنفيذ طلبات النطاق المتقاطع؟
(1) أولاً ، تحتاج إلى تحميل البرنامج النصي JavaScript من Flyjsonp ، أي:
<script language = "javaScript" src = "http://www.cxyblog.com/flyjsonp.min.js"> </script>
(2) ثم تهيئة مثيل flyjsonp ، يمكن تعيين معلمة تصحيح الأخطاء على صواب أو خطأ ، أي: flyjsonp.init ({debug: true}) ، مما يعني ما إذا كان سيتم فتح معلومات التصحيح ، وقيمة المعلمة صحيحة أو خاطئة ؛
(3) بعد ذلك ، استخدم طريقة GET أو POST لطلب البيانات. رمز المثال المحدد هو كما يلي:
. الطلب: {// طلب المعلمة: 5} ، الدالة (البيانات) {// console.log (data) ؛ flyjsonp.init ({debug: true}) ؛ // تهيئة مثيل flyjsonp ، يمكن ضبط تصحيح المعلمة على flyjsonp.post صحيح أو خطأ ({url: 'http: //www.cxyblog.com/article/new' ، parameters: {username: 'cxyblog' العنوان: 'flyjsonp' ، الوصف: 'test'} ، النجاح: دالة (بيانات) {ALERT (data) ؛ملاحظة: عندما يخرج الخادم إلى العميل ، يجب أن يكون الإخراج سلسلة JSON ، وإلا فلن يتمكن العميل من استلامه.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.