讀者問題:關於 Silverlight 2.0 跨網域原則檔的問題與回答

摘要:讀者問題:關於 Silverlight 2.0 跨網域原則檔的問題與回答

問題:

章老師: 老師在"Silverlight 2.0 精華技術手冊" 第15章-如何存取遠端主機資源-, 提及存取跨網域資源必須於被存取網域的Server內建立正確的跨網域原則檔. 請問在沒有跨網域原則檔情形下,Silverlight是否能取得其它網站的特定網頁原始碼?

解答:

在 Silverlight 2.0 的時代,瀏覽器會替 Silverlight 外掛程式處理所有的 HTTP 通訊作業,這樣的設計是很安全的(詳見「Silverlight 2.0 精華技術手冊」一書第 15 章的說明),但此舉卻也讓我們不能取得遠端主機上的資源(例如:特定網頁的內容)。因此,Silverlight 2.0 欲存取遠端資源時,遠端主機必須存在跨網域原則才行

但 是透過其他手法,例如:在 ASP.NET 網站建立一個代理程式(或稱 Proxy),我們依舊可以在遠端主機不存在跨網域原則檔時,存取該主機上的資源。如下所示即是使用 Proxy 的例子(這個範例不太好,因為 Microsoft 網站的根目錄已經存在跨網域原則檔):

http://al.cloudapp.net/proxy.ashx?http://www.microsoft.com/taiwan/press/rss/news.xml

待 .NET RIA Services 正式推出時,如果遠端主機沒有跨網域原則檔,不需透過代理程式,就可直接使用 .NET RIA Services 所提供的 API 取得 RSS 這類的資源。

章立民研究室 2009/09/06