2010-11-14 112 views
2

我正在爲所有的javascript,圖像,swfs等運行一個外部資產主機的rails3項目。這是一個完全不同的域。所以知道我試圖使用swfobject嵌入一些SWF。在開發(相同的主機)一切工作正常,但在生產(不同的主機),它不啓動閃光燈(螢火蟲顯示文件已加載,但沒有出現在頁面上)。我已經把這個crossdomain.xml文件放在資產主機的根目錄下,但是它根本不會改變任何東西。閃存和跨域問題

http://my.host/crossdomain.xml

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy> 

http://my.host/swfs/sound1.swf http://my.host/swfs/video1.swf ...

我能做些什麼,使工作?我使用的SWF不是由我開發的,所以我不能改變它們。有些是簡單的聲音,有些則是視頻和小型「應用程序」。我不想讓rails爲swfs服務。

回答

1

您的「內容」主機需要允許您的「資產」主機訪問,而不是其他方式。

這是爲了保護用戶免受跨站點腳本攻擊,因此讓擁有文件的主機決定他們是否可以訪問將全部倒退。

+0

suzre你是對的,愚蠢的meh – gucki 2010-11-16 10:42:18

2

<allow-access-from domain="*"/>不會在最近的Flash版本工作,你必須指定準確的域和端口,例如:

<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all"/> 
    <allow-access-from domain="my.host" to-ports="80,8080"/> 
</cross-domain-policy> 

,肯定你應該把crossdomain.xml的到您的Rails應用程序的公共的根目錄,而不是在您的資產主機上。

+0

好的,謝謝你的提示。我沒有測試,因爲我把一個特定的域名。 – gucki 2010-11-16 10:43:20

0

除了上面的答案(把crossdomain.xml放在發出請求的主機上,而不是資產主機上)我必須將參數allowcriptaccess:「always」添加到swfobject。否則,閃光燈中的ExternalInterface無法啓動。