0

我正在尝试使用带有 jQ​​uery 库的 JS 从服务器(我制作的,我拥有完全访问权限)加载数据。这在浏览器中完美运行。但现在我正试图让它在 phonegap 上工作。由于某种原因,这不起作用。

  • 它不是 jQuery,我尝试用它改变颜色,它工作正常。
  • 我可以访问互联网,当我尝试从网站加载图片时,它工作正常。

我将以下设置添加到config.xml

<access origin="*"/>
  <plugin name="cordova-plugin-whitelist" version="1"/>
  <allow-intent href="http://*/*"/>
  <allow-intent href="https://*/*"/>
  <allow-intent href="tel:*"/>
  <allow-intent href="sms:*"/>
  <allow-intent href="mailto:*"/>
  <allow-intent href="geo:*"/>
  <platform name="android">
    <allow-intent href="market:*"/>
    <allow-intent href="*"/>
  </platform>
  <platform name="ios">
    <allow-intent href="itms:*"/>
    <allow-intent href="itms-apps:*"/>
  </platform>

我还添加了一些 HTML 元标记:

<meta http-equiv="Content-Security-Policy" 
      content="default-src *; 
               style-src 'self' 'unsafe-inline' 'unsafe-eval'; 
               script-src 'self' 'unsafe-inline' 'unsafe-eval';">

这是我的 AJAX 调用:

    $.ajax({
         url: "http://domain.com/Rooster/schedule",
         data: {token : 's0m3r4nd0mt0k3n', user : '~me'},
         type: "GET",
         crossDomain: true,
         success: function( response ) {
              \\irrelevant success function.
            }
      });
}

希望有人能让这个工作!

4

3 回答 3

1

@David
您犯了一个常见的错误。您需要应用whitelist系统。从Cordova Tools 5.0.0(2015 年 4 月 21 日)开始需要它。对于Phonegap Build,这意味着自cli-5.1.1(2015 年 6 月 16 日)

用以下内容替换您所拥有的(上面列出的)config.xml

<plugin name="cordova-plugin-whitelist"      source="npm" spec="1.1.0" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" /> <!-- Required for iOS9 -->

注意您的应用程序现在不安全。保护您的应用程序由您决定。 使用以下内容修改您index.html的:

<meta http-equiv="Content-Security-Policy" 
         content="default-src *; 
                  style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
                  script-src * 'self' 'unsafe-inline' 'unsafe-eval';">

注意您的应用程序现在不安全。保护您的应用程序由您决定。

快速提示:您可以通过删除所有“内联”javascript 和样式 (css) 来绕过 CSP (Content-Security-Policy)。将它们放在一个单独的文件中。我将在本月晚些时候写博客。混合应用程序的新“最佳实践”将“内联”移动到单独的文件。

白名单工作表应该可以帮助您保护您的应用程序。
如何应用 Cordova/Phonegap 白名单系统——祝你好运

于 2016-02-27T10:55:19.117 回答
0

你有白名单插件吗?这通常是此错误的根源

https://github.com/apache/cordova-plugin-whitelist

于 2016-02-25T15:02:07.647 回答
0

您的内容安全策略可能需要一个 connect-src 添加到其中列出您要连接到的服务器,或者 * 为所有。这是一个例子:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://domain.com">

connect-src 控制您可以向哪些外部服务器发出 Ajax 类型的请求。有关完整说明,请查看此博客文章内容安全策略参考站点。

于 2016-02-26T02:17:47.500 回答