كيف يمكن استهلاك خدمات الويب عن بعد من برنامج نصي من جانب العميل؟[مغلق]

StackOverflow https://stackoverflow.com/questions/324771

سؤال

مما أفهمه، نظرًا لفرض "نفس سياسة الأصل" في المتصفحات الحالية، من المستحيل الحصول على البيانات من XmlHttpRequest المرسلة إلى مجال مختلف عن المجال الأصلي لجافا سكريبت.

لدي ما يقرب من الصفر من الخبرة فيما يتعلق بهذا الأمر، لذا فأنا في حيرة من أمري بشأن عدم إمكانية استخدام خدمات الويب من Javascript.هل يعني ذلك أن تطبيقات الويب التي تحتوي على وظيفة Ajax لا يمكنها التفاعل إلا مع نفسها دون الاتصال بالخدمات التي توفرها المجالات الأخرى؟كيف تعمل "الخلطات"؟أعتقد أن الخدمات يتم استهلاكها من جانب الخادم، ثم يتم تمرير البيانات إلى العميل عبر مكالمات Ajax المحلية.لا أعرف.

الطريقة الوحيدة التي يمكنني تخيلها لتحقيق استهلاك الخدمات من جانب العميل هي استرداد ملف Javascript مباشرة من مجال خدمة الويب المستهدفة عبر <script> العلامة، ثم استخدم واجهة برمجة التطبيقات الخاصة بها للتفاعل مع المجال البعيد.

هل يمكن لأحد أن ينيرني؟

هل كانت مفيدة؟

المحلول

في سؤالك ذكرت خدعة <script>.يعتمد JSONP على ذلك. تم اقتراحه رسميًا منذ ما يقرب من 3 سنوات بواسطة بوب إيبوليتو.إنه لا يمنحك الحق في التحدث إلى أصل النص البرمجي - يتم تحديد الأصل من خلال صفحة الويب الخاصة بك، وليس من خلال ما يتضمنه أيضًا.إنه يعمل فقط لأن الخادم يغلف JSON في وظيفة رد الاتصال، والتي يجب تحديدها في التعليمات البرمجية الخاصة بك، وسيتم تنفيذها بواسطة <script> عند تحميلها.أشهر مثال على JSONP هو خدمات Yahoo، بما في ذلك Flickr.

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

وبطبيعة الحال، يجب أن أذكر القادمة طلب مايكروسوفت XDomainRequest.تم التخطيط لشحنه مع IE8، ولم يلتزم أي بائعين آخرين بدعمه، ولكن تم تقديمه لتضمينه في HTML 5.تعد XDR جزءًا مفيدًا من الوظائف، لكنني أظن أنه سيتم تغييرها عدة مرات قبل قبولها.

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

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top