السبب وراء وجود جافا سكريبت عبر المجال هو أنه نظرًا لقيود سياسة تماثل المتصفح، يمكن لـ js في اسم المجال الحالي قراءة سمات النافذة فقط في نفس المجال، لذلك يحدث عبر المجال. تعني سياسة المصدر نفسه أنه من أجل ضمان أمان معلومات المستخدم ومنع مواقع الويب الضارة من سرقة البيانات، تحظر المتصفحات تفاعلات JS بين المجالات المختلفة.
كيفية البدء بسرعة باستخدام VUE3.0: أدخل
بيئة التشغيل لهذا البرنامج التعليمي: نظام Windows 10، إصدار JavaScript 1.8.5، كمبيوتر Dell G3.
المشكلة عبر المجال مقيدة بسياسة المصدر نفسه للمتصفح. يمكن لـ js لاسم المجال الحالي قراءة سمات النافذة في نفس المجال فقط.
بسبب قيود سياسة المصدر نفسه للمتصفح. سياسة المصدر نفسه هي اتفاقية وهي وظيفة الأمان الأساسية والأكثر أهمية للمتصفح. إذا كانت سياسة المصدر نفسه مفقودة، فقد تتأثر الوظائف العادية للمتصفح. يمكن القول أن الويب مبني على أساس سياسة المصدر نفسه. المتصفح هو مجرد تطبيق لسياسة نفس المصدر. تمنع سياسة نفس الأصل برامج JavaScript النصية من مجال واحد من التفاعل مع المحتوى من مجال آخر. ما يسمى بنفس الأصل (أي في نفس المجال) يعني أن الصفحتين لهما نفس البروتوكول والمضيف ورقم المنفذ.
ببساطة، تعني سياسة المصدر نفسه أنه من أجل ضمان أمان معلومات المستخدم ومنع مواقع الويب الضارة من سرقة البيانات، يحظر المتصفح تفاعلات JS بين المجالات المختلفة. بالنسبة للمتصفحات، طالما أن أحد أسماء النطاقات والبروتوكولات والمنافذ مختلف، فسيتم تشغيل سياسة المصدر نفسه، وبالتالي تقييد التفاعلات التالية بينها:
1. لا يمكن قراءة ملفات تعريف الارتباط و LocalStorage و IndexDB
؛ لا يمكن الحصول على DOM
3. لا يمكن إرسال طلب AJAX.
التعريف الأكثر صرامة للمجال المشترك هو: طالما أن البروتوكول واسم المجال والمنفذ مختلفان، فإنه يعتبر مجالًا مشتركًا.
الحل عبر النطاقات
JSONP: تحتاج إلى إضافة نوع البيانات: "jsonp" في طريقة الطلب، // تم تعيين تنسيق البيانات على jsonp، jsonp: "رد الاتصال"، // يقوم Jquery بإنشاء اسم معلمة التحقق
1، نوع البيانات، يجب تعيين هذه المعلمة في jsonp
2.jsonp، يجب الاتفاق على قيمة هذه المعلمة مع
حزمة الويبللوكيل العكسي nginx
من جانب الخادمتكوين الوكيل العكسي: استخدم devServer السقالات مباشرة لتكوين الوكيل العكسي لحل المشكلات عبر المجال في عملية التطوير
مشاركة الموارد عبر المجال (CORS)
Nodejs عبر المجال: استخدم Nodejs محليًا لإعداد خادم، واستدعاء خادم الواجهة الخلفية من خلال هذا الخادم، وإرجاع البيانات، ثم إعادتها إلى خادم الواجهة الأمامية
-بروتوكولWebSocket
عبر المجال
من خلال JSONP.
افهم بنفسك: JSONP هو src باستخدام علامة البرنامج النصي، يمكنك فقط استخدام طلبات الحصول على الخلفية للحصول على البيانات التي تريدها،
مبدأ JSONP: تحدد الواجهة الأمامية طريقة جيدة وتمررها إلى الواجهة الخلفية من خلال سمة src. يتم تمريره إلى الواجهة الأمامية، وتستخدمه الواجهة الأمامية كطريقة للاتصال بـ
JSONP، وتضيف بشكل أساسي رد اتصال في طريقة الطلب المغلفة، ويتم الاتفاق على رد الاتصال هذا من خلال الواجهة الأمامية والخلفية
.
ما ورد أعلاه هو تفاصيل أسباب محتوى جافا سكريبت عبر النطاقات، يرجى الانتباه إلى المقالات الأخرى ذات الصلة على موقع php الصيني لمزيد من المعلومات!