在我们的网站 www.foo.com 我们要下载和使用 http://feeds.foo.com/feed.xml 与Javascript。我们将显然使用 访问控制 但是,浏览器,不支持它,我们正在考虑以下作为备用:

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 并呼吁的回呼功能在其父母与饲料的数据为计:

<?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 feeds.foo.com 和什么样的影响,该框架代理/xslt/他把戏吗?(..和在什么情况下将它的失败?)


发言

  • 这种工作不在野生动物园和铬但由于两支持 访问控制 它的罚款。
  • 我们希望很小或没有变化 feeds.foo.com
  • 我们都知道(但不感兴趣)服务器方代理的解决方案
  • 更新: 写了关于它
有帮助吗?

解决方案

如果你能控制这两个领域,可以尝试一个跨领域的脚本库喜欢 EasyXDM, ,其中包裹截浏览器的怪癖,并提供一个易于使用的API通信的客户脚本之间的不同领域使用可用的最佳机制,浏览器(例如 问题 如果提供,其他机制如果不)。

警告:你需要拥有控制权这两个领域,以便使它的工作(其中"控制"意味着你可以静态的文件,在他们两个).但你不需要任何服务器的端代码变化。

另一个警告:那里是安全的影响在这里--使确定你信任的其他领域的剧本!

其他提示

你可以使用雅虎的api(YQL)..只有指定网址,格式和回调

这种服务器的端解决方案,但是不在你的服务器)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top