小编Ove*_*vis的帖子

cordova-plugin-whitelist在Android上工作但不在iOS上工作(Phonegap Build)

我正在开发一个包含在Cordova中并使用Phonegap Build构建的JavaScript应用程序.我们cordova-plugin-whitelist在构建中包含npm,并在index.html中添加<access origin="*" />了config.xml和一个开放的CSP(<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">).该应用程序在Android上运行良好,可以毫无问题地与我们的服务器通信,但在iOS上,所有请求都会立即失败,就像白名单插件不允许通过流量一样.

我已经尝试了许多不同的构建配置,以防特定版本的Cordova中出现问题,但根本无法使其工作.我过去曾遇到过与其他Phonegap/Cordova应用程序类似的问题,但是能够使用白名单插件/ CSP /访问规则来解决它.

此问题也很难调试,因为Safari开发人员工具无法连接到iOS设备,我不得不提醒我看到的响应.看起来回来的响应有一个状态代码0和一个空体,我假设它只是意味着无法访问.

android ios cordova phonegap-build cordova-plugins

6
推荐指数
1
解决办法
2575
查看次数

LoopBack/Angular/Cordova在Android上超时

我们有一个Web应用程序,它使用Strongloop的LoopBack作为API和后端,以及前端的Angular,Cordova用于打包移动.来自Cordova的Web应用程序和iOS目标运行良好,但是当我们尝试为Android设备构建时,应用程序服务器无法从设备访问.更具体地说,在加载客户端应用程序并尝试登录后,设备向我的API发出POST但从未收到响应(据我所知,请求从未真正命中过服务器).

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

  • 确保在config.xml中access设置为origin="*"
  • 确保Content-Security-Policy在我的(单页)应用程序的index.html中设置了元标记,允许远程网络
  • 确保INTERNET在Android Manifest中正确设置了权限
  • 确保可以从浏览器中的设备访问应用服务器
  • 确保生成的lb-services.jsAngular服务具有正确的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 Build,可识别信息已删除):

<?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>

javascript angularjs cordova phonegap-build strongloop

5
推荐指数
1
解决办法
255
查看次数

使用访问令牌重置环回密码

我正在一个使用Loopback作为框架的项目,其中包括用户和身份验证。我添加了生成并通过电子邮件发送的密码重置路由,并且一切似乎都正常运行。最近,我发现密码重置似乎不起作用。此处重置密码的过程是:

  • 用户通话密码重置方法
  • 通过重置事件发送电子邮件,包括用户ID和访问令牌
  • 在重置链接中,将$ http.defaults.headers.common.authorization设置为传递的令牌
  • 调用user.prototype $ updateAttributes(由lb-ng生成)以基于表单更新密码属性

预期的行为是密码将在密码重置表单上更新。相反,我收到了401或500的授权错误(似乎来回了)。我注意到在发送给API的实际标头中,授权令牌与我从路由传递的内容不匹配。尝试使用LoopBackAUth.setUser进行设置无效,并且在实际发送请求之前也不会更新授权属性。

第一次添加时,我肯定会花时间测试它,但我不知道要改变什么才能打破它。我一直在遵循loopback-faq-user-management中的示例,但是在该示例中,我们有一个Angular前端而不是服务器侧视图。

编辑:

我尝试完全打开ACL,以查看是否可以更新用户对象(继承自User,但它是自己的类型)的密码(或任何属性)。尝试执行此操作时,我仍然收到401。

编辑#2:

这是我的ACL和有关如何调用此代码的示例代码。

来自模型定义的ACL

...
{
    "accessType": "*",
    "principalType": "ROLE",
    "principalId": "$owner",
    "permission": "ALLOW"
},
{
    "accessType": "EXECUTE",
    "principalType": "ROLE",
    "principalId": "$owner",
    "permission": "ALLOW",
    "property": "updateAttributes"
}
...
Run Code Online (Sandbox Code Playgroud)

auth.js

...
resetPassword: function(user) {
    return MyUser.prototype$updateAttributes(user, user).$promise;
}
...
Run Code Online (Sandbox Code Playgroud)

javascript node.js angularjs strongloop loopbackjs

4
推荐指数
1
解决办法
5501
查看次数