[英]Getting cross-domain errors when using angularjs within flex (web control), and attempting to load templates/json (local files)
让我告诉你一些关于我正在做什么的历史。
我正在使用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控制器使其工作。
任何帮助将不胜感激。
不幸的是,你可能不会。 我不知道Flex包含在它的Web控制器中的引擎是什么,但是你碰到这个的原因是安全性。
它有充分的理由,这是为了防止JS直接访问您的文件系统。
我建议使用两种解决方法之一。
捆绑一个简单的网络服务器。 例如https://stackoverflow.com/questions/530787/simple-http-web-server
修改AngularJS App(可能还有$ routeProvider)以使用新的File API
这有点像哈希,但是将模板的所有内容复制到主文件中<script type="text/ng-template" id="some-id"></script>
此外,您可以尝试使用$ http.jsonp而不是$ http.get,尽管您可能需要更改angularJS代码....
我相信在Flex中至少有两种渲染网页的实现。 我快速检查了StageWebView的文档,发现file:// uri方案允许本地XMLHttpRequests(基本上是$ http.get正在做什么)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.