我有一个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时失败所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)