تحميل عبر المجال XML مع جافا سكريبت باستخدام مفهوم Hybrid iFrame-Proxy / XSL / JSONP؟

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

سؤال

على موقعنا www.foo.com نريد تنزيل واستخدام http://feeds.foo.com/feed.xml مع جافا سكريبت. سوف نستخدم بوضوح صلاحية التحكم صلاحية الدخول ولكن بالنسبة للمتصفحات التي لا تدعم ذلك نحن ننظر فيما يلي ما يلي

على www.foo.com, ، وضعنا document.domain, ، تقديم وظيفة رد الاتصال وتحميل الأعلاف في (مخفية) iframe:

document.domain = 'foo.com';
function receive_data(data) {
 // process data
};

var proxy = document.createElement('iframe');
proxy.src = 'http://feeds.foo.com/feed.xml';
document.body.appendChild(proxy);

على feeds.foo.com, ، إضافة XSL إلى feed.xml واستخدامه لتحويل الخلاصة إلى مستند HTML الذي يحدد أيضا document.domain ويستدعي وظيفة رد الاتصال في الوالد مع بيانات التغذية مثل JSON:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 <xsl:template match="ROOT">
  <html><body>
   <script type="text/javascript">
    document.domain = 'foo.com';
    parent.receive_data([<xsl:apply-templates/>]);
   </script>
  </body></html>
 </xsl:template>
 <!-- templates that transform data into json objects go here -->
</xsl:stylesheet>

هل هناك طريقة أفضل لتحميل XML من Feed.foo.com وما هي تداعيات هذا خدعة iFrame-Proxy / XSLT / JSONP؟ (.. وفي أي حالات سوف تفشل؟)


ملاحظات

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

المحلول

إذا كانت لديك السيطرة على كلا النطاقات، فيمكنك تجربة مكتبة البرمجة النصية عبر المجال easyxdm., ، الذي يلف Quirks متصفح عبر الإنترنت ويوفر واجهة برمجة تطبيقية سهلة الاستخدام للتواصل في البرنامج النصي للعميل بين المجالات المختلفة باستخدام أفضل آلية متاحة لهذا المتصفح (على سبيل المثال بعد الاكتسم إذا كانت متوفرة، آليات أخرى إذا لم يكن).

التحذير: تحتاج إلى التحكم في كلا النطاقات من أجل جعلها تعمل (حيث "التحكم" يعني أنه يمكنك وضع ملفات ثابتة على كلا منهم). ولكن لا تحتاج إلى تغييرات رمز جانب الخادم.

تحذير آخر: هناك آثار أمنية هنا - تأكد من أنك تثق في البرنامج النصي للنطاق الآخر!

نصائح أخرى

يمكنك استخدام apis ياهو (yql.) .. فقط حدد عنوان URL والتنسيق والعدل

إنه نوع من محلول جانب الخادم، ومع ذلك ليس على الخادم الخاص بك :)

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