我们有一个 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 查询所必需的。
你安装了吗? 如果不是,这肯定是您的问题;)