默認情況下,Flash Player 會從端口 843 查找套接字策略文件。和 URL 策略文件一樣,此文件稱為“主策略文件”,如果要從其它端口提供套接字策略文件,SWF 文件必須調用 Security.loadPolicyFile()。
套接字策略文件具有與 URL 策略文件相同的語法,只是前者還必須指定要對哪些端口授予訪問權限。如果套接字策略文件來自低于 1024 的端口號,則它可以對任何端口授予訪問權限;如果策略文件來自 1024 或更高的端口,則它只能對 1024 端口和更高的端口授予訪問權限。允許的端口在 <allow-access-from> 標記中的 to-ports 屬性中指定。單個端口號、端口范圍和通配符都是允許值。
Flash Player 首先在端口 843 上檢查是否有主策略文件。如果找到主策略文件,Flash Player 將檢查該文件是否含有在目標端口上禁止套接字策略文件的元策略語句。如果未禁止訪問,Flash Player 首先在主策略文件中查找適當的 allow-access-from 語句。如果找不到主策略文件,Flash Player 將從主套接字連接所在的端口上查找套接字策略文件。
當 Flash Player 請求策略文件時,它始終會在建立連接后傳輸以下字符串:<policy-file-request/>;服務器收到此字符串后,即會傳輸該策略文件。
程序對于策略文件請求和主連接并不會使用同一連接,因此請在傳輸策略文件后關閉連接。如果不關閉連接,Flash Player 將關閉策略文件連接,之后重新連接以建立主連接。
如果服務器是linux系統,那么我們在http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html,下載flashpolicyd_v0.6.zip
這里有perl和python腳本,安裝python或perl后就可以使用,上面的網址有使用說明:
./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,否則無法通過安全策略;