About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • Jun

    29

    套接字发布者许可基本格式分两种情况,如果是基于HTTP的方式来获取一个套接字许可的策略文件,那么它的基本格式与跨域策略文件一致(参考《跨域发布者许可(策略文件)使用方法详解》)。如果是基于套接字的方式来获取一个套接字许可的策略文件,那么它的基本格式与与跨域策略文件类似,但在 <allow-access-from> 标签中需要加一个 to-ports 属性。

    1、在基于套接字的方式取得策略文件时, to-ports 属性中使用 * 是一个通配符,并且基于获取时的端口号来分配这个 * 号的范围,如果获取时的端口号小于1024(但不包括 1024),那么 * 表示相关的 SWF 文件对任何端口的访问都被授权;否则 * 号表示大于或等于 1024 的任何端口都允许被相关的 SWF 文件访问(此时既便小于 1024 的端口被显式的写入,也是无效的)。

    在基于套接字的方式中,如果SWF文件在相同的端口取得套接字的策略文与正常通信,那么Flash 播放器自动创建一个单独的端口,并通过发送一个 <policy-file-request/> 协义让服务器来响应获取相应的策略文件,随后是正常的连接请求。如果是不同的端口,那么需要先使用如下代码,来手工的装载一个策略文件:

    Security.loadPolicyFile("xmlsocket://domainOrIP:portNumber");

    随后是相应的正常连接请求的代码(它也是自动等待套接字策略文件的,是一种“伪同步”,与获取跨域策略文件一样),实际上使用的是 Socket 类来连接,但前面加载策略文件中强制使用 xmlsocket:// 协议。

    2、在基于HTTP的方式获取套接字策略文件时,它有以下这些条件限制:

    ● 它必须被命名为crossdomain.xml

    ● 它必须放置于网页服务器的根目录中

    ● 它必须在所需要的套接字连接的域名或IP地址的端口80上提供服务

    ● 在AS3中,它必须使用Security.loadPolicyFile() 方法来加载(使用http://协议)。

    由于基于HTTP方式获取套接字策略文件的方式是为了向旧版本兼容,实际上并不推荐使用,因为它无法使用 to-ports 属性来指定相应的端口,取而代之的它只给大于或等于 1024 的所有端口授予访问权(它不可以对小于 1024 的端口授予访问权)。同样,基于 HTTP 方式获取策略文件时也是“伪同步”的。

    More...