JavaScript可以从第三方域加载XML数据吗?

时间:2009-03-19 01:38:39

标签: javascript rss cross-domain

JavaScript可以从Yahoo加载RSS XML Feed吗?

是否允许客户端JS访问第三方域?

5 个答案:

答案 0 :(得分:2)

执行此操作的简单方法是通过页面所在的服务器代理请求。步骤是:

  1. 写一个服务器端脚本在rss feed上执行http请求,当该脚本本身是请求时(即通过get或post)
  2. 使用ajax请求服务器端脚本,或者只从该页面的主脚本中调用它。
  3. 然后,服务器端脚本以某种可显示的形式返回源代码。
  4. 利润!
  5. 在IE 8和FF 3.1(不确定)上,可以通过专门的跨站点调用来发出这些请求,但上一代浏览器仍然会导致问题。参见:

    http://dannythorpe.com/2009/01/15/ie8-cross-domain-request-support-demo/ http://ejohn.org/blog/cross-site-xmlhttprequest/功能在FF 3.0中受到限制,不清楚它是否会回到3.1

    但是,保证上述步骤不会违反任何浏览器CSS安全性,代价是服务器上出现一些滞后和额外的负载。

答案 1 :(得分:2)

您可以使用我的博文Unwritten guide to Yahoo Query Langauge

中列出的技术

您将使用yql语句查询XML数据表,如下所示:

select * from xml
  where url="http://path/to/xml
然后你会在你的html中添加一个脚本标签(可以使用document.createElement('script'))和src http://query.yahooapis.com/v1/public/yql?q=/your yql here} & format = json& callback = {your function here}其中{your yql here}将替换为您的yql statment的URI编码版本。

答案 2 :(得分:2)

您可以使用Google Feed API从任何域/服务器加载JavaScript中的RSS。它不仅仅是一个代理,它实际上是从Google缓存中提供RSS内容而不是访问原始服务器。这可能是无法处理Slashdot流量激增的小型服务器的救星。

几年前,我在article on Silverlight中使用Feed API进行跨网站RSS访问。

答案 3 :(得分:0)

我不确定JS,但我知道你可以使用google's APIs中的一个,并且他们有一个RSS阅读器。我知道这可能不是你想要的,但如果你仔细阅读文档,你就可以得到你的答案。

答案 4 :(得分:0)

不直接。您可以使用Dana关于请求的代理建议,或者查看一个名为JSONP的方法,该方法基本上将返回的JSON对象包装在自定义回调函数中,由您注入DOM的脚本标记请求。大多数API提供商都支持此功能(包括Yahoo的API)。