[英]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.