Phonegap跨域Ajax请求仅在debuggable = false时在Android上失败,而在debuggable = true时失败

Phonegap跨域Ajax请求仅在debuggable = false时在Android上失败,而在debuggable = true时失败,第1张

概述我有一个PhoneGap应用程序,该应用程序在iOS上运行良好,但是在为发布版本进行设置时,无法在Android上运行.我正在使用PhonegapCLI创建应用程序.$phonegap--version4.2.0-0.24.2设置了用于网络访问和白名单的config.xml选项:<accessorigin="*"/><featurename="http://ap

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

我正在使用Phonegap Cli创建应用程序.

$phonegap --version4.2.0-0.24.2

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

<access origin="*" /><feature name="@R_403_6822@://API.phonegap.com/1.0/network" />

我已验证我的AndroIDManifest.xml正在请求互联网权限:

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

我的API返回适当的ACCESS-CONTRol-ALLOW-ORIGIN标头值:

Access-Control-Allow-Origin: *

为了很好,我也将其添加到了Js中:

$.support.cors = true;

如果我设置androID远程调试属性,以便可以从Chrome:// inspect连接,则网络请求成功,一切正常:

<application androID:deBUGgable="true" ... >

但是,如果我只是删除了androID:deBUGgable =“ true”以便可以提交到Play商店,重新编译并再次测试,则我的跨域AJAX请求将失败.当它们失败时,它们将返回jqXHR.status = 0和jqXHR.readyState = 0,根据我的经验,这表明飞行前OPTIONS请求由于某种原因而失败.

不幸的是,当我启用调试并连接以查看网络请求时,所有内容都可以正常工作-因此我看不到有什么问题.我已经恢复到alert()-进行了各种尝试来找出正在发生的事情……但是我没有得到更多.

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

我不知道该怎么办.我还可以提醒其他有关该错误的信息吗? (也许是导致此问题的其他标头?)

解决方法:

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

>在iOS上运作良好
>在笔记本电脑上的Chrome中正常运行(文件://和本地主机)
>使用@R_403_6822@://时工作正常
>使用@R_403_6822@s://时出现明显的CORS飞行前请求失败(statusCode = 0,status = 0)

现在,我将使用对我的API的非SSL访问权限,这样我就可以继续前进了,我将让服务器管理员知道SSL存在问题–可能是AndroID不信任的中间证书.

总结

以上是内存溢出为你收集整理的Phonegap跨域Ajax请求仅在debuggable = false时在Android上失败,而在debuggable = true时失败全部内容,希望文章能够帮你解决Phonegap跨域Ajax请求仅在debuggable = false时在Android上失败,而在debuggable = true时失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078669.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存