2009-11-03 43 views
0

我有一個在http://server/abc/service中運行的Web服務,該服務由來自不同域的Flash訪問。我部署一個跨域策略文件http://server/abc/crossdomain.xml,並使其使用Flash加載:在主影片剪輯的構造在非根目錄中Flash crossdomain.xml

flash.system.Security.loadPolicyFile("http://server/abc/crossdomain.xml"); 

。但是,當Flash啓動時,它會請求並加載此文件(在Firebug中觀察到),但它也會從不存在的服務器根目錄(即從http://server/crossdomain.xml)請求該文件。後續的HTTP請求不起作用報告安全跨域錯誤。當我將策略文件放到服務器的根目錄時,它一切正常。

爲什麼它從根目錄請求策略文件,甚至認爲它從子目錄加載它?爲什麼子目錄策略文件不夠?

我還應該注意,在發出任何應用程序HTTP請求之前,這兩個策略文件都會被加載。

回答

2

我認爲它必須驗證主策略文件是否允許備用策略文件設置權限。

Here's an interesting article with this little tidbit

如果客戶指示使用策略文件中比主策略文件的其他位置,客戶端必須首先檢查主策略文件的元策略,以確定如果允許原始策略文件

+0

+1謝謝你的鏈接。我必須承認我沒有閱讀跨域策略文件規範。我只讀了我認爲沒有提到的Flash幫助。 –

1

策略文件必須位於服務器上的根Web目錄中。這是爲了確保可能控制服務器上的子文件夾的人不能運行「官方」網站(例如根目錄)不支持的策略。