Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 需要在使用SWFLoader检索远程Flex.swf文件时设置cookie头_Apache Flex_Cookies_Air_Http Headers_Swfloader - Fatal编程技术网

Apache flex 需要在使用SWFLoader检索远程Flex.swf文件时设置cookie头

Apache flex 需要在使用SWFLoader检索远程Flex.swf文件时设置cookie头,apache-flex,cookies,air,http-headers,swfloader,Apache Flex,Cookies,Air,Http Headers,Swfloader,我正在编写一个AIR1.5应用程序,我想在其中从web服务器远程加载Flex.swf文件 我正在使用Flex 3.2 SDK,并试图通过SWFLoader使用子应用程序功能。我一直在参考开发和加载子应用程序文档,了解如何执行此操作 我确实可以从远程web服务器成功加载Flex.swf文件,并将其加载到远程沙箱中。这个.swf文件的运行形式甚至尊重我在AIR原生窗口上设置的透明度设置 问题是: 对于生产环境,我们的web服务器使用Spring Security来转移对登录网页的任何未经授权的访问(

我正在编写一个AIR1.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安全性保护的网站检索文件(这是一种广泛使用的保护对基于Java的网站的访问的方法,在与Spring源代码融合之前,它曾被称为Acegi安全性)

在浏览器Flash Player沙箱中运行我们基于Flex的代码是一件轻而易举的事——Spring安全性的东西是由浏览器管理的。不过,在远程沙箱的安全范围内,尝试将我们基于Flex的应用程序作为子应用程序在空中运行被证明是一种可怕的体验


AIR HTML控件虽然与Spring安全性配合得很好,但它是不可能的,因为如果在AIR本机窗口上透明度设置为true,则加载的任何.swf或.pdf内容都不会显示出来。当我们在用户桌面上运行MDI子窗口时,我们特定的UI设计绝对要求将透明度设置为true。

我通过将AIR HTML控件的使用与SwfLoader的使用相结合来解决这个问题,然后加载所需的远程.swf文件

我在HTML网页上编写了一个JavaScript函数,我的AIR应用程序将其加载到一个HTML实例中(当页面完成事件触发时,从AIR Flex代码调用JavaScript函数是安全的——当然,Flex代码可以处理HTML完成事件)

此JavaScript函数使用XmlHttpRequest()登录到使用Spring安全性进行授权的网站。成功登录后,将处理设置Cookie头。当XmlHttpRequest()的响应完成时,将在网页上放置的虚拟DIV对象上调度一个合成单击事件。AIR Flex代码能够注册并处理此合成点击事件

处理click事件后,AIR-Flex代码就知道可以安全地继续实例化SwfLoader实例。当来自SwfLoader对象的完整事件激发时,SwfLoader的对象引用将放置在AIR app显示列表中

然后,用户看到远程加载的swf文件开始执行并显示其自己的UI。它在子应用程序远程沙盒上下文中运行。Flex SDK 3.2通过SwfLoader控件支持子应用程序功能

因此,AIR应用程序正在管理由HTML控件建立的cookie头。当该cookie头用于加载远程.swf文件时,它将在SwfLoader控件的HTTP请求中发出。Spring Security filter会看到这一点,并发现请求来自经过身份验证的用户会话