| Flash CS3 文檔 ![]() | |||
| 學(xué)習 Adobe Flash 中的 ActionScript 2.0 > 了解安全性 > 允許數據訪(fǎng)問(wèn)的服務(wù)器端策略文件 > 關(guān)于 XMLSocket 策略文件 | |||
![]() | |||
![]() | |||
![]() | |||
對于 XMLSocket 連接試圖而言,Flash Player 7 (7.0.14.0) 會(huì )在試圖連接的子域內的 HTTP 服務(wù)器(端口 80)上查找 crossdomain.xml。Flash Player 7 (7.0.14.0) 以及所有早期版本將 XMLSocket 連接限制在端口 1024 和更高的端口。但是,在 Flash Player 7 (7.0.19.0) 和更高版本中,ActionScript 可以使用 System.security.loadPolicyFile 將策略文件的非默認位置通知 Flash Player。XMLSocket 策略文件的任何自定義位置都必須仍在 XML 套接字服務(wù)器上。
在下面的示例中,Flash Player 從指定的 URL 檢索策略文件:
System.security.loadPolicyFile("http://www.adobe.com/folder/policy.xml");由該位置的策略文件授予的所有權限均適用于服務(wù)器層次結構中與該位置同層或低于該層的所有內容。因此,如果您試圖加載下面的數據,會(huì )發(fā)現只能加載某些位置的數據:
myLoadVars.load("http://www.adobe.com/folder/vars.txt"); // 允許myLoadVars.load("http://www.adobe.com/folder/dir/vars2.txt"); // 允許myLoadVars.load("http://www.adobe.com/elsewhere/vars3.txt"); // 不允許要解決此問(wèn)題,可以使用 loadPolicyFile 向一個(gè) SWF 文件加載多個(gè)策略文件。Flash Player 總是等所有策略文件下載完畢后,才會(huì )拒絕需要策略文件的請求。如果 SWF 中沒(méi)有其它授權的策略,則 Flash Player 將查詢(xún) crossdomain.xml 的默認位置。
特殊語(yǔ)法允許直接從 XMLSocket 服務(wù)器檢索策略文件:
System.security.loadPolicyFile("xmlsocket://adobe.com:414");在本例中,Flash Player 試圖從指定的主機和端口檢索策略文件。如果策略文件不在默認(根)目錄中,可以使用任意端口;否則只能使用端口 1024 和更高的端口(與早期版本的播放器相同)。建立與指定端口的連接后,Flash Player 將發(fā)送 <policy-file-request />,以空字節結束。
可以配置 XML 套接字服務(wù)器,使其通過(guò)以下方式提供策略文件:
<policy-file-request />。 服務(wù)器必須在關(guān)閉連接前發(fā)送一個(gè)空字節以終止策略文件。如果服務(wù)器不關(guān)閉連接,則 Flash Player 將在接收到結束空字節時(shí)關(guān)閉連接。
XML 套接字服務(wù)器提供的策略文件具有與其它策略文件相同的語(yǔ)法,只是它還必須指定授予訪(fǎng)問(wèn)權限的端口。允許的端口在 <allow-access-from> 標簽中的 to-ports 屬性中指定。如果策略文件的端口低于 1024,則它可以給任何端口授予訪(fǎng)問(wèn)權限;如果策略文件來(lái)自端口 1024 或更高端口,則它只能給高于 1024 的其它端口授予訪(fǎng)問(wèn)權限。允許使用單端口號、端口范圍和通配符。下面的代碼是一個(gè) XMLSocket 策略文件的示例:
<<cross-domain-policy>><<allow-access-from domain="*" to-ports="507" />><<allow-access-from domain="*.adobe.com" to-ports="507,516" />><<allow-access-from domain="*.helpexamples.com" to-ports="516-523" />><<allow-access-from domain="www.adobe.com" to-ports="507,516-523" />><<allow-access-from domain="www.helpexamples.com" to-ports="*" />><</cross-domain-policy>>
因為連接到 1024 以下的端口的能力是 Flash Player 7 (7.0.19.0) 和更高版本中的新功能,因此即使 SWF 文件連接到它自己的子域,也總是需要使用通過(guò) loadPolicyFile 加載的策略文件來(lái)進(jìn)行授權。
![]() | ||||
![]() | ![]() | ![]() | ||
![]() | ![]() | Popup | ![]() | ![]() |
![]() | ![]() | ![]() | ||
![]() | ||||
聯(lián)系客服