Cordova iOS 跨源请求仅支持 HTTP
Posted
技术标签:
【中文标题】Cordova iOS 跨源请求仅支持 HTTP【英文标题】:Cordova iOS Cross origin requests are only supported for HTTP 【发布时间】:2016-07-26 21:23:00 【问题描述】:我正在构建一个 ios 应用,最近将 cordova-ios 升级到 4.1.0 并开始使用:cordova-plugin-wkwebview-engine。
问题是现在我在尝试加载依赖项时收到错误消息Cross origin requests are only supported for HTTP
,因此应用程序无法启动。
它试图通过 file:// 加载 systemjs 依赖项,但我包含在我的 config.js 中。
我不知道如何解决这个问题。有没有人有这种行为的经验?
cordova 版本:6.1,0 科尔多瓦 ios 版本:4.1.0
相关的config.xml位:
<access origin="*" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
【问题讨论】:
这是 WKWebView 的一个已知限制,您可以尝试安装wkwebview-engine-localhost
plugin 添加网络服务器并解决您的问题 github.com/apache/cordova-plugins/tree/master/…
你在这方面有没有成功?
这解决了我的问题。知道 Apple 是否仍会使用此解决方案接受您的应用进入商店?
【参考方案1】:
我的 cordova 项目(实际上是 Ionic v1)遇到了同样的问题,我使用以下命令修复它:
cordova plugin add https://github.com/apache/cordova-plugins.git#wkwebview-engine-localhost
这将安装一个在本地运行的网络服务器,之后错误应该会消失。运行该命令后,只需运行:
cordova prepare ios
或删除所有插件并重新安装:
rm -rf plugins/
cordova platform add ios
确保你的 config.xml 中有这个:
<access origin="*" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
【讨论】:
【参考方案2】:安装以下插件:
cordova plugin add cordova-plugin-wkwebview-engine
cordova plugin add cordova-plugin-wkwebview-file-xhr
cordova plugin add https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix
添加到config.xml
:
<platform name="ios">
...
<preference name="WKWebViewOnly" value="true"/>
...
</platform>
【讨论】:
【参考方案3】:安装这个插件(cordova-ios 6+)
cordova plugin add https://github.com/globules-io/cordova-plugin-ios-xhr
然后设置
<preference name="AllowUntrustedCerts" value="true" />
<preference name="InterceptRemoteRequests" value="all" />
<preference name="allowFileAccessFromFileURLs" value="true" />
<preference name="allowUniversalAccessFromFileURLs" value="true" />
【讨论】:
你节省了我的一天,请注意,有时会自动添加首选项。 其他方法都试过了,只有这一种有效!kCFErrorDomainCFNetwork error 1
尝试后【参考方案4】:
对于 Cordova iOS 6+ 只需要安装以下插件。
cordova plugin add https://github.com/AraHovakimyan/cordova-plugin-wkwebviewxhrfix
此插件不依赖任何其他附加插件,也不需要额外的权限。
【讨论】:
你为我节省了很多时间! 这个插件打破了最新版本的cordova-ios的构建 您好 João Pimentel Ferreira,请告诉我问题的详细信息以及您使用的是什么 Cordova-ios 版本?【参考方案5】:我的 ionic v1 Cordova 项目遇到了同样的问题。对我来说,解决方案是迁移到电容器,如下所示:
启动一个新的 Ionic v1 项目(% ionic start Bienchen blank --type ionic1) 当 cli 询问是否集成“电容器”时,回答“是”。 在新 Ionic v1 项目的 www 文件夹中查看我的源代码 使用电容器构建项目(% ionic 电容器构建 iOS)记住 Cordova config.xml 比不再使用,而是在 Xcode Project 中配置。
【讨论】:
以上是关于Cordova iOS 跨源请求仅支持 HTTP的主要内容,如果未能解决你的问题,请参考以下文章