gpt4 book ai didi

android - Phonegap 跨域 ajax 请求仅在 Android 上当 debuggable=false 时失败,当 debuggable=true 时不会

转载 作者:可可西里 更新时间:2023-10-31 22:04:34 25 4
gpt4 key购买 nike

我有一个 PhoneGap 应用程序,它在 iOS 上运行良好,但在设置发布版本时,在 Android 上无法运行。

我正在使用 Phonegap CLI 创建我的应用程序。

$ phonegap --version
4.2.0-0.24.2

已设置网络访问和白名单的 config.xml 选项:

<access origin="*" />
<feature name="http://api.phonegap.com/1.0/network" />

我已验证我的 AndroidManifest.xml 正在请求互联网许可:

<uses-permission android:name="android.permission.INTERNET" />

我的 API 返回适当的 ACCESS-CONTROL-ALLOW-ORIGIN header 值:

Access-Control-Allow-Origin: *

为了更好的衡量,我还将此添加到我的 JS 中:

$.support.cors = true;

如果我设置了 android 远程调试属性以便我可以从 chrome://inspect 进行连接,那么网络请求就会成功并且一切正常:

<application android:debuggable="true" ... >

但是,如果我简单地删除那个 android:debuggable="true" 以便我可以提交到 play 商店、重新编译并再次测试,那么我的跨域 ajax 请求就会失败。当他们失败时,他们返回 jqXHR.status=0jqXHR.readyState=0,根据我的经验,这表明飞行前 OPTIONS 请求失败了一些原因。

不幸的是,当我启用调试并连接以查看网络请求时,一切正常——所以我看不出哪里出了问题。我已经恢复到 alert()-ing 各种事情来尝试弄清楚发生了什么......但我没有得到任何进一步的结果。

我还可以使用 file:// url(这就是它在 Android 应用程序中的打开方式)在笔记本电脑的浏览器中运行我的应用程序,也可以通过 a local webserver 运行它。 (位于 localhost:3030),在这两种情况下,跨域请求都可以正常工作。

我现在不知所措。还有什么我可以提醒以获取有关该错误的更多信息的吗? (也许是其他 header 导致了这个问题?)

最佳答案

我相信我已经找到了问题:Android 不喜欢我的中间 SSL 证书之一。这与我注意到的行为一致:

  • 在 iOS 上运行良好
  • 在笔记本电脑上的 Chrome 中运行良好(file://localhost)
  • 在使用 http://
  • 时工作正常
  • 使用 https:// 时明显的 CORS 飞行前请求失败(statusCode=0status=0)

现在,我将只使用非 SSL 访问我的 api,这样我就可以继续前进,我会让服务器管理员知道 SSL 有问题 ~ 可能是 Android 不信任的中间证书.

关于android - Phonegap 跨域 ajax 请求仅在 Android 上当 debuggable=false 时失败,当 debuggable=true 时不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29656464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com