在flex(Web控件)中使用angularjs并尝试加载templates/json(本地文件)时出现跨域错误

xil*_*il3 5 javascript apache-flex cross-domain local-files angularjs

让我告诉你一些关于我正在做什么的历史.

我正在使用Flex应用程序,作为Web应用程序的容器.因此,在这个Flex应用程序中,它有一个Web控制器,可以加载一个完整的Angularjs应用程序.所有文件都存储在Flex应用程序中.

当我尝试运行它时,它无法加载任何模板; 它们使用$ routeProvider加载,并使用$ http.get拉取数据.

核心问题是它不允许我使用JavaScript来提取本地文件,即使它是从文件系统(不使用Web服务器)运行的.

我也在Chrome上测试了它,并且具有相同的问题 - 给出以下错误.

Origin null is not allowed by Access-Control-Allow-Origin.

使用Chrome,它可以使用固定--allow-file-access-from-files,但无法弄清楚如何通过Flex/Flash Web控制器使其工作.

任何帮助将不胜感激.

fre*_*rik 1

不幸的是,你可能做不到。我不知道 Flex 在其 Web 控制器中包含什么引擎,但您遇到此问题的原因是安全性。

它的存在是有充分理由的,它是为了防止 JS 直接访问你的文件系统。

我建议采用两种解决方法之一。

  • 捆绑一个简单的网络服务器。例如/sf/ask/37155121/

  • 修改 AngularJS 应用程序(可能还有 $routeProvider)以使用新的文件 API

  • 这有点麻烦,但是将模板的所有内容复制到主文件中<script type="text/ng-template" id="some-id"></script>