Ajax 通电话 Javascript 在 PhoneGapp 应用上

Ajax calls with Javascript on PhoneGapp app

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

我在 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.
            }
      });
}

希望有人能让这个工作!

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

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

您的内容安全策略可能需要一个 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 类型请求。如需完整说明,请查看 this blog post and the Content Security Policy Reference 网站。

@大卫
你犯了一个常见的错误。您需要应用whitelist系统。截至 Cordova Tools 5.0.0 (April 21, 2015). For Phonegap Build, that means since 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';">

请注意,您的应用现在不安全。保护您的应用程序取决于您。

快速提示:您可以通过删除所有 "inline" javascript 和样式 (css) 来绕过大部分 CSP(内容安全策略)。将它们放在一个单独的文件中。我将在本月晚些时候写博客。混合应用程序的新 "best of practice" 将 "inline" 移动到分隔文件。

这份白名单工作表应该可以帮助您保护您的应用程序。
HOW TO apply the Cordova/Phonegap the whitelist system -- 祝你好运