我们有一个 Web 应用程序,它使用 Strongloop 的 LoopBack 作为 API 和后端,在前端使用 Angular,并使用 Cordova 为移动设备打包。来自 Cordova 的 Web 应用程序和 iOS 目标按预期工作得很好,但是当我们尝试为 Android 设备构建时,应用程序服务器无法从设备访问。更具体地说,在加载客户端应用程序并尝试登录后,设备向我的 API 发送了一个 POST,但从未收到响应(据我所知,请求从未真正到达服务器)。

这是我到目前为止尝试过的:

  • 确保access设置为 origin="*"在 config.xml 中
  • 确保 Content-Security-Policy在我的(单页)应用程序的 index.html 中设置了元标记,允许远程网络
  • 确保 INTERNET已在 Android Manifest 中正确设置权限
  • 确保可以从浏览器中的设备访问应用服务器
  • 确保生成lb-services.js Angular 服务有正确的 API 地址
  • 尝试生成一个 Ionic Framework 应用程序并将我的应用程序代码放入其中,以防它生成我需要的东西

由于我能够使用 Cordova 在 iOS 中运行我的应用程序而没有任何问题,我想这里一定有一些特定于我的 Android 配置的东西。我确实遇到了一个单独的问题,即安装的插件与最新的 Cordova 不兼容,但删除该插件似乎已经解决了这个问题。为 Android 构建会阻止它工作的不同之处是什么?

编辑:

我已改用 Phonegap Build,希望它能简化工作流程,但我仍然遇到同样的问题。这是我正在执行的白名单/CORS 配置:

index.html 中的元标记: <meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'self' 'unsafe-inline'; script-src * 'self' 'unsafe-inline' 'unsafe-eval'">

config.xml(Phonegap 构建,已删除可识别信息):

<?xml version="1.0" encoding="UTF-8" ?> <widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" id="..." version="1.0.0"> <name ... /> <description ... /> <author ... /> <icon src="icon.png" /> <gap:splash src="splash.png" /> <preference name='phonegap-version' value='cli-5.1.1' /> <gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" version="1.1.1" /> </widget>

请您参考如下方法:

安装 https://github.com/apache/cordova-plugin-whitelist因为 Cordova 5.0.0 是 CORS 查询所必需的。

你安装了吗? 如果不是,这肯定是您的问题;)


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!