【发布时间】:2016-03-02 18:07:59
【问题描述】:
我已将现有应用更新到 Cordova 6.0.0,但在使用 XCode 7.2.1 面向 iOS 9 的 iOS 设备上运行它时遇到问题。
我已经安装了 WKWebView 插件:cordova-plugin-wkwebview-engine 1.0.2
运行使用 AngularJS 构建的应用程序时,它尝试做的第一件事就是打开一个 json 文件:
$http.get('data/config.json').success(function(data) {
// do stuff
});
但是我们在 web 视图控制台中得到了这个错误:
XMLHttpRequest cannot load file:///var/mobile/Containers/Bundle/Application/
E9D74C94-ADC6-410F-9F41-7CE63CB7877F/Milk.app/www/data/config.json. Cross
origin requests are only supported for HTTP.
在 config.xml 文件中我们有:
<access origin="*" subdomains="true" />
为什么 file:// 请求会这样被阻止,我该如何解决?
*编辑*
根据plugin page:
“在 iOS 9 中,Apple 已经修复了在 iOS 8 中存在的问题 无法使用 file:// 加载语言环境文件,必须使用 本地网络服务器。但是,您仍然无法从 在您的服务器上未启用 CORS 的 file:// 协议。”
“你的服务器”是什么意思?什么服务器?我们正在加载一个本地文件,没有服务器!
【问题讨论】:
-
使用的是哪个ios版本?
-
@Meiko 它是 iOS 9。鉴于对于 iOS 9 显然 fixed 本地 Web 服务器的问题,我不明白有关在本地启用 CORS 的部分服务器。换句话说,它听起来好像并没有真正修复!
-
如果你使用的是 Cordova 6 和 cordova-ios@4.0,那么你不需要这个插件,Cordova 使用 wkwebview:cordova.apache.org/news/2016/01/28/tools-release.html
-
@Joerg - 好的,很高兴知道。但是删除插件并没有解决问题。
-
@Joerg,你错了。 cordova-ios 4.0 没有使用 wkwebview,只是添加了对可插入 webview 的支持,比如 wkwebview,但是要使用它,他必须像他一样安装插件。