我正在编写一个 AIR 1.5 应用程序,我想在其中从 Web 服务器远程加载 Flex .swf 文件。
我正在使用 Flex 3.2 SDK 并尝试通过 SWFLoader 使用子应用程序功能。我一直在参考开发和加载子应用程序文档以了解如何执行此操作。
我确实可以从远程 Web 服务器成功加载 Flex .swf 文件,并将其加载到远程沙箱中。这个 .swf 文件的运行形式甚至尊重我在 AIR 本机窗口上设置的透明度设置。
这是摩擦:
对于生产环境,我们的 Web 服务器使用 Spring Security 来转移对登录网页的任何未经授权的访问(这也是正常开发/QA 构建部署的情况)。如果成功登录,则登录的响应会设置一个 cookie。此 cookie 标头应出现在所有后续的寻求从站点检索内容的 HTTP 交互中。
我不知道如何在使用 SWFLoader 检索 Flex .swf 文件时设置 cookie 标头。
如何使用 SWFLoader 从受 Spring Security 保护的网站检索文件(这是一种广泛使用的保护对基于 Java 的网站的访问的方法——在与 Spring Source 融合之前,它曾经被称为 Acegi 安全性)。
在浏览器 Flash Player 沙箱中运行我们的基于 Flex 的代码是一件轻而易举的事——Spring Security 的东西由浏览器管理。但是,尝试在 AIR 中将我们基于 Flex 的应用程序作为子应用程序运行在远程沙箱的安全范围内,这被证明是一种地狱般的体验。
AIR HTML 控件虽然与 Spring Security 配合得很好,但它是不行的,因为如果在 AIR 本机窗口上将透明度设置为 true,则加载的任何 .swf 或 .pdf 内容都不会显示。我们特定的 UI 设计绝对要求将透明度设置为 true,因为我们正在制作浮动在用户桌面上的 MDI 子窗口。