Ajax在PhoneGapp应用程序上使用Javascript调用

时间:2016-02-25 13:40:08

标签: javascript jquery ajax cordova phonegap-desktop-app

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

  • 这不是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.
            }
      });
}

希望有人可以让这个工作!

3 个答案:

答案 0 :(得分:1)

@大卫
你犯了一个常见的错误。您需要应用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 -->

注意您的应用程序现在已不确定。由您来保护您的APP。 使用以下内容修改您的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';">

注意您的应用程序现在已不确定。由您来保护您的APP。

快速提示:您可以通过删除所有&#34;内联&#34;来传递更多CSP(内容安全策略)。 javascript和style(css)。把它们放在一个单独的文件中。我将在本月晚些时候在博客上发表论文。新的&#34;最佳实践&#34;对于混合应用移动&#34;内联&#34;分开文件。

白名单工作表可以帮助您保护自己的应用 HOW TO apply the Cordova/Phonegap the whitelist system - 最好的运气

答案 1 :(得分:0)

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

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

答案 2 :(得分: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类型请求。要获得完整说明,请查看this blog postContent Security Policy Reference网站。