【问题标题】:Cordova: Ajax call not working on iOS, works fine on AndroidCordova:Ajax 调用无法在 iOS 上运行,但在 Android 上运行良好
【发布时间】:2015-10-11 15:45:02
【问题描述】:

我是第一次使用 Cordova(不是 Phonegap!),我的应用在 Android 上运行良好,但在 iOS 上无法访问外部服务器进行 ajax 调用。 我加了

<access origin="*" />

到 config.xml 没有任何成功。我能找到的所有解决方案都只能在 Phonegap 中使用。有谁知道如何解决这个问题?甚至可能是 Xcode 中的设置?非常感谢!

【问题讨论】:

    标签: ios ajax cordova


    【解决方案1】:

    在过去两 (2) 周内,Cordova 进行了一些重大更改。文档没有赶上。我不认为它会赶上至少几个星期。您有两 (2) 个选项:

    1. 将您的编译器版本设置为 Cordova 4.0.0 之前的版本
    2. 遵循完整协议以使用white-list

    我推荐#2。

    来自Top Mistakes by Developers new to Cordova/Phonegap,您已点击:

    • #6 没有为你的编译器设置“phonegap 版本”
    • #7 没有为你的插件设置“版本”
    • #10 不在 config.xml 中添加新的“白名单”和“白名单插件”参数。

    #6 & #7

    使用 CLI 版本,如果您没有为您的平台或“Phonegap Build”分配版本,如果您没有在 config.xml 中设置 phonegap-version,您将获得最新版本。如果幸运的话,您的程序会按预期运行。如果你不走运,你会得到一系列级联错误。

    幸运的是,Holly Schinsky 写了一篇很好的博文来解释这一切:

    Cordova/PhoneGap 版本混乱
    http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/

    #10

    这个相对 * 新 * 要求意味着——要访问网络上的任何网站或资源,您必须使用白名单和白名单插件。如果您使用的是 cordova-android@4.0.0 或更高版本,此要求将生效;包括 cli-5.1.1 和 cli-5.2.0。但是,如果您的版本是 4.0.0 之前的版本,比如 3.5.0 或 3.7.0,那么您将不必添加白名单要求。 p>

    需要明确的是,“白名单”已经存在了一段时间,但插件和要求是非常新的。如您所料,当添加“白名单”时,事实上的开放访问功能已被弃用。或者换一种说法,事实上的开放访问功能是计划和计划取消的。这一变化标志着在移除开放获取功能方面迈出了一步。

    此外,内容安全政策 (CSP) 吸引了众多开发人员 - 因为它的宣传太差了。 根据您的使用情况和您使用的Phonegap 版本,CSP 需要进入您使用的每一个HTML 页面,就像您必须等待'deviceready' 一样。但是,在某些情况下根本不需要它。文档让一些人感到困惑,请仔细阅读。 该文档隐藏在许多最新文档页面的底部。

    相关链接

    Phonegap 构建论坛:Notes for upgrading to cli-5.1.1 on PGB,现在需要白名单

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多