关于 XMLSocket 策略文件

来源:百度文库 编辑:神马文学网 时间:2024/09/29 05:38:11
Flash CS3 文档 
学习 Adobe Flash 中的 ActionScript 2.0 >了解安全性 >允许数据访问的服务器端策略文件 > 关于 XMLSocket 策略文件



关于 XMLSocket 策略文件
对于 XMLSocket 连接试图而言,Flash Player 7 (7.0.14.0) 会在试图连接的子域内的 HTTP 服务器(端口 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 套接字服务器上。
在下面的示例中,Flash Player 从指定的 URL 检索策略文件:
System.security.loadPolicyFile("http://www.adobe.com/folder/policy.xml");
由该位置的策略文件授予的所有权限均适用于服务器层次结构中与该位置同层或低于该层的所有内容。因此,如果您试图加载下面的数据,会发现只能加载某些位置的数据:
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"); // 不允许
要解决此问题,可以使用 loadPolicyFile 向一个 SWF 文件加载多个策略文件。Flash Player 总是等所有策略文件下载完毕后,才会拒绝需要策略文件的请求。如果 SWF 中没有其它授权的策略,则 Flash Player 将查询 crossdomain.xml 的默认位置。
特殊语法允许直接从 XMLSocket 服务器检索策略文件:
System.security.loadPolicyFile("xmlsocket://adobe.com:414");
在本例中,Flash Player 试图从指定的主机和端口检索策略文件。如果策略文件不在默认(根)目录中,可以使用任意端口;否则只能使用端口 1024 和更高的端口(与早期版本的播放器相同)。建立与指定端口的连接后,Flash Player 将发送 ,以空字节结束。
可以配置 XML 套接字服务器,使其通过以下方式提供策略文件:
在同一端口上提供策略文件和常规套接字连接。在传送策略文件之前,服务器应等待 。 通过常规连接在不同端口上提供策略文件,在这种情况下,可以在专用策略文件端口上建立了连接之后立刻发送策略文件。
服务器必须在关闭连接前发送一个空字节以终止策略文件。如果服务器不关闭连接,则 Flash Player 将在接收到结束空字节时关闭连接。
XML 套接字服务器提供的策略文件具有与其它策略文件相同的语法,只是它还必须指定授予访问权限的端口。允许的端口在 标签中的 to-ports 属性中指定。如果策略文件的端口低于 1024,则它可以给任何端口授予访问权限;如果策略文件来自端口 1024 或更高端口,则它只能给高于 1024 的其它端口授予访问权限。允许使用单端口号、端口范围和通配符。下面的代码是一个 XMLSocket 策略文件的示例:
<><
><><><><><>
因为连接到 1024 以下的端口的能力是 Flash Player 7 (7.0.19.0) 和更高版本中的新功能,因此即使 SWF 文件连接到它自己的子域,也总是需要使用通过 loadPolicyFile 加载的策略文件来进行授权。



相关主题


Popup




Popup