【问题标题】:PhoneGap Android from 3.7.0 to 4.0.2 cross-domain XHR 404'sPhoneGap Android 从 3.7.0 到 4.0.2 跨域 XHR 404
【发布时间】:2015-11-13 00:47:27
【问题描述】:

我在config.xml 中有一个带有以下内容的 Android 应用程序:

<access origin="*" />

然后,我开始使用 Angular $http 向 API 端点发出请求,如下所示:

$http({
  data: this._createTokenRequest(tenant, username, password),
  method: 'POST',
  headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
  timeout: 10000,
  url: url + '/api/RequestToken'
}).catch(err => {
  alert(err.message || err);
  alert(JSON.stringify(err));
}).then(response => {
  alert(response);
});

3.7.0 中将调用响应处理程序。自从升级到4.0.2(根据http://phonegap.com/blog/2015/06/16/phonegap-updated-on-build/ 使用PhoneGap Build 设置&lt;preference name="phonegap-version" value="cli-5.1.1" /&gt;),catch 被调用时出现404 Not Found 错误。

是什么原因造成的?我在更改日志 (https://github.com/apache/cordova-android/blob/4.0.2/RELEASENOTES.md) 中没有看到相关条目。

【问题讨论】:

  • 任何其他消息与 404 一起吐出?另外,他们已经完全改变了他们的白名单,你需要添加cordova-plugin-whitelist插件。
  • 没有其他消息。插件cordova-plugin-whitelist 看起来很有希望,但可惜的是,PhoneGap build 没有它。在community.phonegap.com/nitobi/topics/… 提出了一个关于此的问题。现在我们拭目以待..

标签: android angularjs cordova phonegap-build


【解决方案1】:

当您切换到cli-5.1.1 时,您将切换到Android 的4.0.x 版本。正如@laughingpine 在评论中指出的那样,白名单机制已经改变。之前,您可以使用&lt;access origin="*" /&gt; 来获得对所有域的访问权。这不再适用。

现在你需要cordova-plugin-whitelist (https://github.com/apache/cordova-plugin-whitelist)。具体请参考文档。早期通配符的大致等价物是&lt;allow-navigation href="*" /&gt;,这是新机制。

要在 PhoneGap Build(以下称为 PGB)下进行构建,您需要添加插件。由于该插件在npm(节点包管理器)下可用,您可以在cordova-plugin-whitelist 名称(https://www.npmjs.com/package/cordova-plugin-whitelist)下找到最新版本。 PGB 可以使用以下符号从npm 构建插件:

<gap:plugin name="cordova-plugin-whitelist" version="1.0.0" source="npm" />

现在 PGB 将正确构建,并且您的白名单可以像以前一样工作。

【讨论】:

    【解决方案2】:

    对于在 phonegap 中内置旧版应用程序但更新构建过程以使用最新版本的 cordova 的其他任何人,Roel 的回答需要稍作调整。

    config.xml

    <widget ... />
         <name>Legacy App built in phonegap</name>
         <access origin="*" />
    </widget>
    

    科尔多瓦的新 config.xml

    <widget ... />
         <name>Legacy App built in phonegap</name>
         <plugin name="cordova-plugin-whitelist" version="1" />
         <allow-navigation href="*" />
    </widget>
    

    如果您收到 XML: unbound prefix 异常被抛出,这可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 2012-10-15
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多