【问题标题】:Retrieving XML data from a ReST service across domains with Dojo使用 Dojo 从 ReST 服务跨域检索 XML 数据
【发布时间】:2012-10-28 08:18:43
【问题描述】:

我正在尝试为响应 XML 的 ReST 应用程序编写一个基于浏览器的 Javascript 客户端(因此似乎 JSONP 是不可能的)。

我正在尝试使用 dojo.io.script.get 检索数据,但传递给回调函数的参数是一个对象,我似乎无法从中检索响应的 XML 数据。

dojo.io.script.get({url:"http://enterpriseapp.enterprisedomain/path/to/rest/collection",
    load:function (data) {
        // 'data' does not contain the actual response (which is XML)
    }
});

检索这些数据的正确方法是什么?

【问题讨论】:

    标签: ajax rest dojo


    【解决方案1】:

    dojo.io.script.get 方法将从指定的网址注入

    如果你想加载 XML,你需要使用 dojo.xhrGet;但是,这将不允许对 3rd 方 URL 的请求。使用 dojo.io.script.get 的优点是您可以使用与加载它们的页面不同的源地址。

    dojo.xhrGet({
        handleAs: "xml",
        load: function(dom){
            // do something with the DOM XML object
        },
        error: function(error){
        }
    });
    

    见:dojo.xhrGet Documentation

    如果您尝试从另一个网站加载 XML,这有点死胡同。如果您有权访问发送服务器,则可以使用 Access-Control-Allow-Origin 标头。

    我使用的另一种解决方案是编写代理脚本(用 PHP 或其他服务器语言)以在正确的域上镜像 XML。如果您执行此操作以包含良好的检查,则需要小心,以免您的服务器代码被他人滥用以进行代理。

    有关 Access-Control-Allow-Origin 的更多信息,请参阅以下 Stackoverflow 对话:
    jQuery XML REST Access-Control-Allow-Origin

    【讨论】:

    • 谢谢,我最终选择了您描述的路线:编写一个代理 Web 应用程序,代表我进行查询。不是很好,但它似乎是克服这个问题的唯一方法。
    猜你喜欢
    • 2017-01-02
    • 2012-04-13
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多