默認(rèn)情況下,F(xiàn)lash Player 會從端口 843 查找套接字策略文件。和 URL 策略文件一樣,此文件稱為“主策略文件”,如果要從其它端口提供套接字策略文件,SWF 文件必須調(diào)用 Security.loadPolicyFile()。
套接字策略文件具有與 URL 策略文件相同的語法,只是前者還必須指定要對哪些端口授予訪問權(quán)限。如果套接字策略文件來自低于 1024 的端口號,則它可以對任何端口授予訪問權(quán)限;如果策略文件來自 1024 或更高的端口,則它只能對 1024 端口和更高的端口授予訪問權(quán)限。允許的端口在 <allow-access-from> 標(biāo)記中的 to-ports 屬性中指定。單個端口號、端口范圍和通配符都是允許值。
Flash Player 首先在端口 843 上檢查是否有主策略文件。如果找到主策略文件,F(xiàn)lash Player 將檢查該文件是否含有在目標(biāo)端口上禁止套接字策略文件的元策略語句。如果未禁止訪問,F(xiàn)lash Player 首先在主策略文件中查找適當(dāng)?shù)?allow-access-from 語句。如果找不到主策略文件,F(xiàn)lash Player 將從主套接字連接所在的端口上查找套接字策略文件。
當(dāng) Flash Player 請求策略文件時,它始終會在建立連接后傳輸以下字符串:<policy-file-request/>;服務(wù)器收到此字符串后,即會傳輸該策略文件。
程序?qū)τ诓呗晕募埱蠛椭鬟B接并不會使用同一連接,因此請在傳輸策略文件后關(guān)閉連接。如果不關(guān)閉連接,F(xiàn)lash Player 將關(guān)閉策略文件連接,之后重新連接以建立主連接。
如果服務(wù)器是linux系統(tǒng),那么我們在http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html,下載flashpolicyd_v0.6.zip
這里有perl和python腳本,安裝python或perl后就可以使用,上面的網(wǎng)址有使用說明:
./flashpolicyd.pl --file=../policyfile.xml --port=843(perl)
./flashpolicyd.py --file=../policyfile.xml --port=843(python)
策略文件示例:
<cross-domain-policy>
<allow-access-from domain="*" to-ports="507" />
<allow-access-from domain="*.example.com" to-ports="507,516" />
<allow-access-from domain="*.example2.com" to-ports="516-523" />
<allow-access-from domain="www.example2.com" to-ports="507,516-523" />
<allow-access-from domain="www.example3.com" to-ports="*" />
</cross-domain-policy>
注意:如果domain(域名)是ip,這里一定要寫通配符*,不能寫ip,否則無法通過安全策略;