如何从另一个域加载 xml 数据

Posted

技术标签:

【中文标题】如何从另一个域加载 xml 数据【英文标题】:How load xml data from another domain 【发布时间】:2012-02-16 14:23:50 【问题描述】:

我需要从另一个域的服务中加载一些 xml 数据。如果我使用 ajax 请求,我会得到“Access-Control-Allow-Origin 不允许 Origin null。”。 我尝试将 Store 与 scriptag 代理和 xml 阅读器一起使用,但我得到 Uncaught SyntaxError: Unexpected token

var myStore = new Ext.data.Store(
        model: 'myModel',
        proxy: 
            type: 'scripttag',
            url : url,
            reader: 
                type: 'xml',
                root: 'users'
            
        ,
        autoLoad: true
    );

问题:如何使用 sencha 或其他 javascript 库从另一个域加载 xml 数据。

【问题讨论】:

您是否可以控制发送 XML 的后端?如果不是你不能这样做...... 如果您可以控制提供 html 的域/服务器,则可以在该 Web 服务器上设置代理。 scripttag 仅适用于 json 阅读器 【参考方案1】:

1) 如果您有权访问后端,则可以启用跨源资源共享 (CORS): how to do it。它将允许您从另一个域获取 xml 数据。

2) 如果不是,您可以使用 YQL(但它看起来像脏 hack):here

3) 无论如何,当您在移动设备上运行应用程序时,这个问题应该会消失。

4) 如果您想找到在桌面浏览器上测试您的应用程序的解决方案,我建议您使用 chrome。因为有一种方法可以禁用此安全限制:

chrome.exe --disable-web-security

5) 最后一个技巧是寻找 JSON 服务,因为 JSONP 请求没有这样的问题。

【讨论】:

以上是关于如何从另一个域加载 xml 数据的主要内容,如果未能解决你的问题,请参考以下文章

从另一个类访问 TextView

如何从另一个类加载spring bean

JavaScript、JSONP 和跨域读取 XML

使用标签栏从另一个视图返回时如何重新加载视图控制器

Primefaces 是不是能够从另一个域获取 jquery?

jwplayer 不支持 crossdomain.xml