WEB开发网
开发学院图形图像Flash 不可见的 Flash:通过使用不可见的 Flash Player ... 阅读

不可见的 Flash:通过使用不可见的 Flash Player 增强 Web 应用程序

 2010-07-09 00:00:00 来源:WEB开发网   
核心提示: 跨域 AjaxAjax 目前在 Web 应用程序中无所不在;它是任何 Web 应用程序中都假设会有的部分,Ajax 的一个主要不足就是为人诟病的同源策略,不可见的 Flash:通过使用不可见的 Flash Player 增强 Web 应用程序(7),如果 Web 页面由 a.com 提供,您只能

跨域 Ajax

Ajax 目前在 Web 应用程序中无所不在;它是任何 Web 应用程序中都假设会有的部分。Ajax 的一个主要不足就是为人诟病的同源策略。如果 Web 页面由 a.com 提供,您只能向 a.com 调用 Ajax(更精确地说是 XMLHttpRequest)。例如,您无法调用 b.com。如果您的公司拥有 a.com 和 b.com,那就没有影响;浏览器不会关心这些。但是对 Flash 应用程序却不是这样。

Flash 应用程序可以获得许可,并对提供服务的域以外的域进行调用。这可以用跨域策略文件完成。默认情况下,Flash 运行时将在服务器的文档根目录搜索策略文件:http://<your domain>/crossdomain.xml。例如,清单 4 是 Twitter 搜索域的策略文件,http://search.twitter.com/crossdomain.xml。

清单 4. Twitter 搜索域的策略文件

<!DOCTYPE cross-domain-policy 
SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
 
<cross-domain-policy> 
  <allow-access-from domain="*" /> 
</cross-domain-policy> 

这是个相当好的策略文件。它允许所有(如 “*” 通配符所示)域对 SWF 进行访问。因此所有 Flash 应用程序都可以调用 Twitter 的搜索 API。在大多数具有公共 API 的 Web 网站上像这样的策略文件很常见。尽管如此,有些网站使用更加严格的策略,只允许自己所有的其他域或合作伙伴的域进行访问。有了策略文件,就可以细粒度地精确控制谁能够调用服务器,谁不能。看看如何将同样的功能扩展到 Ajax 应用程序中。

跨域

如果您的应用程序只需要调用特定的域,可以编写 ActionScript 代码调用该域,然后在应用程序中使用 ExternalInterface 将其公开给 JavaScript。然而,我将采取一种更好的方法,并试图用更一般化的方式进行公开。因此,清单 5 中,将使用一个实用类从 ActionScript 中调用任意域。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:可见 Flash 通过

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接