我正在尝试创建简单的flex应用程序,它使用django作为后端部分。有一个问题:
通常当我运行我的应用程序时,Flex Builder会在我的本地PC上的目录中创建一个文件,然后打开浏览器并指向它。一切都很好,但当我决定通过xml数据提供程序将django服务器链接到flex应用程序时,我开始遇到安全错误。 (与缺少crossdomain.xml相关)。当我创建文件并将其放在服务器上时:
<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="http://127.0.0.1:8000"/>
<allow-access-from domain="127.0.0.1"/>
</cross-domain-policy>
然后再次尝试了应用程序,我在我的FB控制台错误:请求者在http://127.0.0.1:8000/go/active/请求资源来自file:/// Users / oleg / Documents / FB3 / usersList / bin-debug / usersList.swf由于缺少策略文件权限而被拒绝。
我不知道如何修复错误。但问题是有没有办法配置FB3直接将我的swf文件放到服务器上,所以我不需要任何跨域?
由于 奥列格
答案 0 :(得分:1)
我们经历了很多努力。 Flex安全性的东西并没有给我带来好处,但也许我们只是考虑了与Adobe开发人员不同的方法。对我们有用的解决方案是同时为来自同一主机和端口的SWF和动态数据提供服务。
在我们的开发框中,我们告诉Apache从工作区中的目录提供SWF,并从应用程序的本地副本提供动态数据。当我们推向生产时,SWF和app会同时被推送到同一个虚拟主机。
如果这对您不方便,可以使用Apache ProxyPass
directive为其他服务器制作Apache。我没有在生产中使用它,但它对开发人员设置非常方便。
答案 1 :(得分:0)
我不知道让FlexBuilder自动部署更改后的SWF的方法;你当然可以研究一种自动化方法(如Maven和Flex-Mojos)来实现这一目标。
也就是说,摆脱这个错误通常只是向服务器添加policy file。
答案 2 :(得分:0)
导致第二个错误是因为您尝试从“文件”位置获取http资源。我的建议是更改Flex Builder项目,使其输出到Django网站内的某个位置,而不是输出到flex-bin目录。可以在项目的属性对话框中更改此设置。然后,您应该能够让您的前端和后端共享相同的协议和域。