2009-12-03 50 views
11

我已经看到了从跨域检索rss(xmls)的服务器端代理解决方法。事实上,这非常question addressess我同样的问题,但给出了一个不同的解决方案。通过Javascript检索跨域RSS(xml)

我有一个约束不使用代理检索RSS提要。因此,Google AJAX Feed API解决方案也不合格。是否存在针对此问题的客户端专用解决方法。

JSONP是针对使用JSON输出响应的请求的解决方案。但在这里,我有RSS源,可以用纯XML进行响应。

我该如何解决问题。

+0

必须支持哪些浏览器和平台? – 2009-12-13 13:43:28

+0

所有主流浏览器: - IE 7+,Firefox 3+,Chrome .. – Ajay 2009-12-14 10:07:51

回答

0

现在确实不存在跨平台跨站脚本解决方案。你有控制或访问的RSS提要?如果是这样,为什么不直接用JSON响应并使用JSONP?

还有其他一些东西来自HTML5,如跨站点消息传递(称为跨文档消息传递),可能能够提供XML的有效载荷,但上次我检查时,他们没有甚至完全决定了消息的大小限制。

您可以在这里看到的规格:http://dev.w3.org/html5/spec/Overview.html#crossDocumentMessages

+0

要回答你的第一个问题,不,我没有控制饲料。饲料无处不在! – Ajay 2009-12-03 06:14:42

+0

他们是?! /讽刺。 ;)值得一提的是,你有机会控制你正在检索的饲料。 – 2009-12-03 17:40:48

4

使用类似Yahoo! Pipes作为代理和RSS XML转换成JSON响应。

下面是一篇文章,其中包含说明和代码示例,说明如何执行此操作:Yahoo Pipes--RSS without Server Side Scripts

+0

雅虎管道...多数民众赞成在一个NO COS,我有内部饲料! :( – Ajay 2009-12-03 14:14:46

+0

我认为你的内部提要,你必须使用代理 – 2009-12-13 13:42:37

+0

这应该被标记为答案 – the0ther 2011-12-31 00:26:35

0

没有服务器端代理的跨域调用解决方案是使用SWF组件。 您可以编写自己的脚本或使用随时可用的FLSend

该组件使用ActionScript的URLRequest调用远程域,使用ExternalInterface与呈现内容的JavaScript方法进行通信。

+1

你仍然不能从其他服务器检索数据,除非那里的crossdomain.xml文件允许访问所以这不是一个通用的解决方案。 – jcoder 2009-12-03 13:51:14

0

我能想到的唯一方法就是在网页上嵌入一个签名的java applet来检索xml并使用javascript来与之交互。我甚至没有100%确定目前的Java安全模型是什么,但我认为它会起作用。

1

如果您可以控制这两个域,则可以尝试一个跨域脚本库,如EasyXDM,它涵盖了跨浏览器的怪癖,并提供了一个易于使用的API,用于在不同域之间使用最佳方式在客户端脚本中进行通信该浏览器的可用机制(例如,如果可用,则为postMessage,否则为其他机制)。注意:您需要对两个域进行控制才能使其正常工作(其中“控制”意味着您可以在两者上放置静态文件)。但是您不需要任何服务器端代码更改。

另一个警告:这里有安全隐患 - 确保您信任其他域的脚本!