从REST服务检索XML数据跨域使用Dojo(Retrieving XML data from a

2019-08-02 10:46发布

我试图写一个REST应用与XML响应一个基于浏览器的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)
    }
});

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

Answer 1:

dojo.io.script.get方法将注入一个从指定的Web地址<SCRIPT>。 从这个脚本的数据内容将被传递给你的负载功能; 因此,内容必须是有效,如JavaScript。 您可以将XML无法加载插入脚本代码。

如果要加载XML,你需要使用dojo.xhrGet; 然而,这不会允许请求第三方网址。 使用dojo.io.script.get的好处是,你可以比它们加载的页面使用不同的源地址。

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

请参阅: dojo.xhrGet文档

如果你正试图从其他网站加载XML这是一个有点穷途末路的。 如果你有机会到发送服务器可以使用访问控制允许来源头。

我已经使用的另一种解决方案是编写一个代理脚本(在PHP或其他服务器端语言),以反映在正确的域XML。 如果你这样做,包括良好的检查,这样你的服务器代码不被他人的代理滥用你需要小心。

请参阅下面的谈话#1所有关于访问控制允许来源:
jQuery的XML REST访问控制允许来源



文章来源: Retrieving XML data from a ReST service across domains with Dojo
标签: ajax rest dojo