Cordova Whitelist插件

时间:2017-04-16 19:15:17

标签: angularjs cordova cordova-plugins onsen-ui whitelist

我知道这个问题已被多次,多次在线询问。我尝试了所有的东西都运气不好。

我正在尝试将数据发布到服务器并获得简单的响应。 显然我需要安装cordova白名单插件才能从应用程序访问外部源,所以我安装了它。

我得到的错误是: 无法加载资源:net :: ERR_NAME_NOT_RESOLVED

项目信息:

  • 这是一个温泉UI应用
  • Cordova CLI 6.5.0
  • Android版本6.1.2

已安装的插件:

  • cordova-plugin-compat@1.1.0
  • cordova-plugin-file@~4.3.2
  • cordova-plugin-splashscreen@4.0.2
  • cordova-plugin-camera@2.4.0
  • cordova-plugin-whitelist@1.3.3-dev

元标记:

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

我正在使用的工具: Windows 10, Visual Studio 2015

我做了什么:

  1. 使用Visual卸载并重新安装了Whitelist插件 工作室

  2. 卸载插件并通过Cordova CLI重新安装

    cordova插件添加cordova-plugin-whitelist

  3. 通过Github

  4. 卸载并重新安装插件
  5. 我甚至已经从6.2.0

  6. 将Cordova更新为6.5.0
  7. 我创建了一个简单的GET请求,看看它是否有效,但仍然无效。

  8. 在Visual Studio中清除了Cordova缓存。

  9. 我使用的Javascript代码:

    $http({
        method: 'GET', url: "http://mywebsite.com/simple_get.php"
    }).then(
       function (response) {
           alert(JSON.stringify(response));
       },
       function (response) {
           alert(JSON.stringify(response));
       }
    );
    

    jQuery Code也尝试过:

    var settings = {
        "async": true,
        "crossDomain": true,
        "url": "http://mywebsite.com/demo.php",
        "method": "GET",
        "headers": {
            "content-type": "application/x-www-form-urlencoded",
            "cache-control": "no-cache"
        },
        "data": {}
    }
    
    jQuery.ajax(settings).done(function (response) {
        console.log(response);
    });
    

    我不知道如何调试并解决问题,任何帮助将不胜感激...这是我的应用程序完成的最后一步:(

    由于

2 个答案:

答案 0 :(得分:0)

编辑2:

在Ajax函数之上的任何地方尝试此代码。

$(document).ajaxError(function(e, jqxhr, settings, exception) { 
    if (jqxhr.readyState == 0 || jqxhr.status == 0) {
         return; 
    }
 });

这将捕获状态0错误并允许jQuery忽略它并继续Ajax请求。

仅用于调试目的。

修改

尝试以下方法。

$.ajax({
   url: 'YourRestEndPoint',
   headers: {'yourHeaderKey': 'yourHeaderValue',
'yourHeaderKey2': 'yourHeaderValue2'},
   method: 'POST',
   data: {},
   success: function(data){
        console.log('succes: '+data);
    },
    error: function (jqXHR, textStatus, errorThrown){

        console.log(jqXHR + " " + textStatus + " " + errorThrown);

        console.log(jqXHR.status);

    }
});

这应该更好地记录错误。

我从您的问题中看到您正在尝试将数据发布到服务器,但是在您使用GET请求的代码中。端点是接受POST和GET还是仅接受POST。

<强>原始 如果您的“名称未解决”错误,您确保URL正确吗?您是否在可以控制的服务器上运行端点?它是由您或第三方主持的吗?您的DNS查找有问题吗?如果你尝试一个已知的工作端点,相同的代码是否正常工作?

可能是由很多或各种因素引起的。

白名单插件应自动安装在最新版本的Cordova上。

答案 1 :(得分:0)

这是我的 config.xml

<?xml version="1.0" encoding="utf-8"?>
<widget id="au.com.myapp" version="1.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:vs="http://schemas.microsoft.com/appx/2014/htmlapps">
  <name> MyApp</name>
  <description>fancy user interfaces for hybrid mobile applications. It uses uses Apache Cordova to help you build an app that targets multiple mobile platforms: Android, iOS, Windows, and Windows Phone.</description>
  <author email="admin@myappdomain.com" href="http://myappdomain.com">Author</author>
  <content src="index.html" />
  <access origin="*" />
  <allow-intent href="*" />
  <allow-intent href="http://*/*" />
  <allow-intent href="https://*/*" />
  <allow-intent href="tel:*" />
  <allow-intent href="sms:*" />
  <allow-intent href="mailto:*" />
  <allow-intent href="geo:*" />
  <allow-navigation href="*" />
  <allow-intent href="itms:*" />
  <allow-intent href="itms-apps:*" />
  <vs:features />
  <preference name="windows-target-version" value="8.1" />
  <preference name="windows-phone-target-version" value="8.1" />
  <preference name="DisallowOverscroll" value="true" />
  <preference name="Orientation" value="portrait" />
  <preference name="loglevel" value="DEBUG" />
  <preference name="AndroidLaunchMode" value="singleTop" />
  <preference name="ErrorUrl" value="" />
  <preference name="Fullscreen" value="True" />
  <preference name="KeepRunning" value="true" />
  <preference name="SplashScreen" value="screen" />
  <preference name="AutoHideSplashScreen" value="false" />
  <preference name="SplashScreenDelay" value="20000" />
  <preference name="FadeSplashScreen" value="false" />
  <preference name="FadeSplashScreenDuration" value=".25" />
  <preference name="ShowSplashScreenSpinner" value="false" />
  <preference name="AllowInlineMediaPlayback" value="false" />
  <preference name="BackupWebStorage" value="cloud" />
  <preference name="EnableViewportScale" value="false" />
  <preference name="KeyboardDisplayRequiresUserAction" value="true" />
  <preference name="MediaPlaybackRequiresUserAction" value="false" />
  <preference name="SuppressesIncrementalRendering" value="false" />
  <preference name="TopActivityIndicator" value="gray" />
  <preference name="GapBetweenPages" value="0" />
  <preference name="PageLength" value="0" />
  <preference name="PaginationBreakingMode" value="page" />
  <preference name="PaginationMode" value="unpaginated" />
  <feature name="LocalStorage">
    <param name="ios-package" value="CDVLocalStorage" />
  </feature>
  <preference name="UIWebViewDecelerationSpeed" value="normal" />
  <preference name="monaca:AndroidIsPackageNameSeparate" value="false" />
  <preference name="monaca:targetFamilyiPhone" value="1" />
  <preference name="monaca:targetFamilyiPad" value="1" />
  <platform name="android">
    <icon density="ldpi" src="resources/android/icon/drawable-ldpi/icon.png" />
    <icon density="mdpi" src="resources/android/icon/drawable-mdpi/icon.png" />
    <icon density="hdpi" src="resources/android/icon/drawable-hdpi/icon.png" />
    <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi/icon.png" />
  </platform>
  <platform name="android">
    <splash density="land-hdpi" src="resources/android/drawable-land-hdpi/screen.png" />
    <splash density="land-ldpi" src="resources/android/drawable-land-ldpi/screen.png" />
    <splash density="land-mdpi" src="resources/android/drawable-land-mdpi/screen.png" />
    <splash density="land-xhdpi" src="resources/android/drawable-land-xhdpi/screen.png" />
    <splash density="port-hdpi" src="resources/android/drawable-port-hdpi/screen.png" />
    <splash density="port-ldpi" src="resources/android/drawable-port-ldpi/screen.png" />
    <splash density="port-mdpi" src="resources/android/drawable-port-mdpi/screen.png" />
    <splash density="port-xhdpi" src="resources/android/drawable-port-xhdpi/screen.png" />
  </platform>
  <platform name="ios">
    <splash height="480" src="res/screen/ios/Default~iphone.png" width="320" />
    <splash height="960" src="res/screen/ios/Default@2x~iphone.png" width="640" />
    <splash height="1024" src="res/screen/ios/Default-Portrait~ipad.png" width="768" />
    <splash height="2048" src="res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" />
    <splash height="768" src="res/screen/ios/Default-Landscape~ipad.png" width="1024" />
    <splash height="1536" src="res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" />
    <splash height="1136" src="res/screen/ios/Default-568h@2x~iphone.png" width="640" />
    <splash height="1334" src="res/screen/ios/Default-667h.png" width="750" />
    <splash height="2208" src="res/screen/ios/Default-736h.png" width="1242" />
    <splash height="1242" src="res/screen/ios/Default-Landscape-736h.png" width="2208" />
    <splash src="res/screen/ios/Default@2x~universal~anyany.png" />
    <splash src="res/screen/ios/Default@2x~universal~comany.png" />
    <splash src="res/screen/ios/Default@2x~universal~comcom.png" />
    <splash src="res/screen/ios/Default@3x~universal~anyany.png" />
    <splash src="res/screen/ios/Default@3x~universal~anycom.png" />
    <splash src="res/screen/ios/Default@3x~universal~comany.png" />
  </platform>
  <plugin name="cordova-plugin-camera" spec="~2.4.0" />
  <plugin name="cordova-plugin-compat" version="1.1.0" />
  <plugin name="cordova-plugin-file" spec="~4.3.2" />
  <plugin name="cordova-plugin-inappbrowser" version="1.7.0" />
  <plugin name="cordova-plugin-splashscreen" version="4.0.2" />
  <plugin name="cordova-plugin-whitelist" version="1.3.2" />
</widget>