【发布时间】:2012-10-25 19:27:28
【问题描述】:
我正在开发一个脚本,该脚本执行对 python web 服务的跨站点调用,它返回一个 xml。 这是执行跨站调用的html页面的完整代码:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="./jquery.xdomainajax.js"></script>
<script>
jQuery.ajax({
type: "GET",
url: "http://api.notmywebsite.net/search/parameters",
async: true,
beforeSend: function(xhr) {
xhr.withCredentials = true;
},
success: function(data) {
alert(data.responseXML);
},
error: function(err){
alert("error: " + err.status);
}
});
</script>
</head>
<body>
<div id="xmlOutput"></div>
</body>
</html>
当然,问题是脚本不起作用: - 当我通过浏览器调用webservice时,xml成功显示。 - 我正在使用 WebScarab 来检查答案是否有任何内容,并且它有。 HTTP 响应具有正确的标头和预期的 XML 响应。 - 我调试了 python 网络服务以检查我的请求进行的调用是否会返回预期的 XML,并且确实如此。
经过一些研究,我发现了同源策略,为此我开始使用(希望我使用正确)以下代理:https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js
webservice 也使用 php 调用,通过“simplexml_load_file($url);”返回预期的 XML 响应。
我尝试对 google 执行同样的调用(但使用 responseText 而不是 responseXML),它成功了。
xml格式如下:
<OAI-PMH xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/OAI-PMH http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<record>
<header>
<identifier>oai:epimarketplace.net:empid:1066</identifier>
<datestamp>2012-06-25T14:54:01.058Z</datestamp>
<setSpec>resource</setSpec>
<downLink>http://api.epimarketplace.net/fetch/pid/empid:1066</downLink>
</header>
<metadata>
<em>
<metadataLink>http://api.epimarketplace.net/rawfetch/pid/empid:1066/datastream/EM</metadataLink>
<field name="PID">empid:1066</field>
<field name="em.dateSubmitted">2012-08-20T10:43:40Z</field>
<field name="em.generalDescription.subject">Behaviour</field>
<field name="em.generalDescription.type">Dataset harvested from social networks</field>
<field name="em.title"><script>XSS</script>
</field>
<field name="em.uploader.name">Tiago André Posse</field>
<field name="isCollection_b">false</field>
<field name="nComments">0</field>
<field name="nLikes">0</field>
</em>
</metadata>
</record>
</OAI-PMH>
希望你能帮助我,
提前致谢。
【问题讨论】:
-
responseXML 一直给我带来困难。我通常使用 responseText 代替,然后将文本字符串解析为 XML DOM 对象。 无论如何,我已经发布了某些可能会出错的点。
-
你对自己的问题不再感兴趣了吗?即使您有自己的解决方案,也请发布........