2009-12-03 85 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,否則爲其他機制)。注意:您需要對兩個域進行控制才能使其正常工作(其中「控制」意味着您可以在兩者上放置靜態文件)。但是您不需要任何服務器端代碼更改。

另一個警告:這裏有安全隱患 - 確保您信任其他域的腳本!