【问题标题】:Cordova iOS Cross origin requests are only supported for HTTPCordova iOS 跨源请求仅支持 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-localhostplugin 添加网络服务器并解决您的问题 github.com/apache/cordova-plugins/tree/master/…
  • 你在这方面有没有成功?
  • 这解决了我的问题。知道 Apple 是否仍会使用此解决方案接受您的应用进入商店?

标签: ios cordova whitelist


【解决方案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 中配置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        • 2012-06-27
        相关资源
        最近更新 更多