在Flash Player 6或以前,利用loadVariables()、loadVariablesNum()、LoadVars()、XML.load()等載入外部數據,是不可以跨Domain,即在domainA.com的Flash不可以載入在domainB.com的數據(需要通過 Middleware作中間人)。但載入Sub Domain的數據是容許,即放在www.luar.net、luar.net、foo.luar.net的Flash都可以載入在此3個不同的Sub Domain的數據。
Flash Player 7卻帶來了壞消息,它收緊了安全政策,載入Sub Domain的數據是不容許,不過這只對使用了Absolute Path的Flash有影響,例如loadVariablesNum("http://www.domainA.com/data.txt", 0),一般Web Server都可以設定短網址,例如http://domainA.com,如果Flash通過短網址載入,那麼載入外部數據就會受到影響。
Flash 6版本的Flash,在Flash Player 7播放會出現警告字句,需要訪客決定是否準許載入外部數據∶
Flash 7版本的Flash,在Flash Player 7播放就索性沒有警告字句,根本載入外部數據的動作已經被否決了。
解決方法,制作一個名叫crossdomain.xml,放在外部數據的Server的root,即http://www.domainB.com/crossdomain.xml。XML文件里,有一行∶
<allow-access-from domain="" />
你可以自行加入容許路徑,例如∶
<allow-access-from domain="*" /> <allow-access-from domain="luar.net" /> <allow-access-from domain="www.luar.net" /> <allow-access-from domain="*.luar.net" />
通過加入crossdomain.xml,因此也帶來一個好消息,Flash Player 7可以載入跨Domain的外部數據!無論是Flash 6或7版本的Flash,只要在Flash Player 7播放,domainB.com的Server有crossdomain.xml這文件,里面有∶
<allow-access-from domain="*.domainA.com" /> 或 <allow-access-from domain="*" /> 容許任何domain
在domainA.com的Flash就可以載入它的數據。
補充 Flash MX 2004 Professional提供了Data Binding, Web Services組件,網絡上有不少免費公開的Web Services,但是因為Flash Player 7這安全政策,根本得物而無所用,真荒謬。ǔ悄切¦eb Services網站可以加入crossdomain.xml)
原文
出處:藍色理想
責任編輯:藍色
◎進入論壇Flash專欄版塊參加討論
|