ios - Cordova:Ajax 调用在 iOS 上不起作用,在 Android 上运行良好

标签 ios ajax cordova

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

<access origin="*" />

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

最佳答案

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

  1. 将您的编译器版本设置为 Cordova 4.0.0 之前的版本
  2. 遵循使用白名单的完整协议(protocol)

我推荐#2。

来自 Top Mistakes by Developers new to Cordova/Phonegap你打了:

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

对于#6 和#7

With the CLI version, if you do not assign a version for your platform OR in ''Phonegap Build'' if you do not set the phonegap-version in config.xml, YOU WILL GET THE LATEST VERSION. If you are lucky, your program just works as expected. If you are not lucky, you'll get a set of cascading errors.

Luckily for all of us, Holly Schinsky has written a nice blog post to explain it all:

Cordova/PhoneGap Version Confusion
http://devgirl.org/2014/11/07/cordovaphonegap-version-confusion/

对于#10

This relatively * NEW * requirement means – to access ANY website or resources on the web, you MUST use the whitelist and the whitelist plugin. This requirement goes into affect, if you are using cordova-android@4.0.0 or better; including cli-5.1.1 and cli-5.2.0. If however, your version is before 4.0.0, let's say 3.5.0 or 3.7.0, then you will not have to add the white-list requirement.

To be clear, the "whitelist" has been around for a bit, but the plugin and requirement is very new. As you would expect, when the "whitelist" was added, the defacto open-access feature was deprecated. Or said another way, the defacto open-access feature was planned and scheduled to be eliminated. This change marks a step in removal of the open-access feature.

In addition, the Content Security Policy (CSP) has caught numerous developers - because it was soooo poorly publicized. Depending on your use and the version of Phonegap you are using, the CSP needs to go in every single HTML page you used, just like you have to wait for 'deviceready'. However, there are cases where it is not needed at all. The documentation is confusing for some, please read it carefully. The documentation is buried in the bottom of many of the latest documentation pages.

相关链接

Phonegap Build Forum: Notes for upgrading to cli-5.1.1 on PGB and now required Whitelist

关于ios - Cordova:Ajax 调用在 iOS 上不起作用,在 Android 上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33066876/

相关文章:

ios - UITableView 没有填满 iPhone 6 Plus 的整个高度

jquery - 使用 jQuery 写入服务器上的文件?

javascript - Phonegap BarcodeScanner.js 无法在 ios 上关闭

cordova - 我应该在Firebase Cloud Messaging中为授权 key 指定什么

ios - 从 Swift 中的通用 T.Type 获取对象

ios - NSString 文字放在内存中的什么位置?

iphone - 你如何在 iOS 中裁剪图像

javascript - 如何通过多次提交和 Laravel 路由处理 AJAX 表单提交

php - 如果内容发生变化,自动刷新 JS 数组?

iphone - iOS Phonegap 正则表达式替换