当前位置: 首页 > 知识库问答 >
问题:

Cordova白名单插件

安毅
2023-03-14

我知道这个问题在网上被问了很多次。我什么都试了,运气都没了。

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

我返回的错误是:加载资源失败:net::ERR\u NAME\u NOT\u RESOLVED

项目信息:

  • 这是一个Onsen UI应用程序

已安装的插件:

  • cordova插件-compat@1.1.0
  • cordova插件文件@~ 4.3.2
  • cordova插件-splashscreen@4.0.2
  • cordova插件-camera@2.4.0
  • cordova插件-whitelist@1.3.3-开发人员

元标签:

<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

我所做的:

>

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

cordova插件添加cordova插件白名单

通过Github卸载并重新安装插件

我甚至将Cordova从6.2.0更新为6.5.0

我创建了一个简单的GET请求,看看它是否有效,但仍然没有任何效果。

清除了Visual Studio中的Cordova缓存。

我使用的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代码也已尝试:

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个答案

高德水
2023-03-14

编辑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);

    }
});

这应该可以更好地记录错误。

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

原始如果您有“名称未解决”错误,您是否确保URL正确?您是否在控制的服务器上运行终结点?它是由您还是第三方托管的?您的DNS查找是否有问题?如果尝试一个已知的工作endpoint,相同的代码是否正常工作?

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

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

强硕
2023-03-14

这是我的配置。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>
 类似资料:
  • Android10不支持“白名单插件”,当我添加Android平台时,它跳过了白名单插件,这在构建或运行应用程序时会导致“文件传输插件”问题 创建应用程序时,会出现以下错误: 任务:app: compileDebugJavaSusJavac D:\workspace\SCL\Platform\android\app\src\main\java\org\apache\cordova\filetran

  • 请原谅我的语言。我在几年前安装了cordova,它以前工作、创建和发布过项目。。我设置了新的windows这次我在编写命令时,每次在相同的windows版本10 i上使用相同的步骤安装cordova: 它给了我这个错误: 安装'cordoa-plugin-whelist'失败:错误: cmd:命令失败,退出代码1在ChildProcess.when完成(C:\xampp\htdocs\test2\

  • 外部域是应用无法控制的,而域名白名单则是一种控制访问外部域的安全模型。Cordova提供了一项可配置的安全策略来定义哪些外部站点可以访问。默认情况下,新的app被配置成可以访问任何站点。然而在发布到生产环境前,你应该制定一份白名单,限制应用可以访问的域名和子域名。 对于Android(从4.0版本起),Cordova的安全策略是通过一个插件接口来扩展的。你的app应该使用cordova-plugi

  • 我正在Heroku上部署后端服务器(节点/express)。它使用Mongodb Atlas作为数据库,应用程序托管在Heroku上。 在开发过程中,我接受了“允许从任何地方访问”,这很好,但对于生产,我认为这是一个安全风险。我似乎找不到我的Heroku服务器的IP地址,因为它似乎不时发生变化。 是否有一些易于实施但又安全的最佳做法?

  • 很多时候,我们需要根据调用来源来判断该次请求是否允许放行,这时候可以使用 Sentinel 的来源访问控制(黑白名单控制)的功能。来源访问控制根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。 调用方信息通过 ContextUtil.enter(resourceName, origin)

  • 我想在我的cordova应用程序中使用谷歌地图插件。我使用以下命令成功创建sha1密钥: keytool-exportcert-alias androiddebugkey-keystore C:\users\morsali.android\debug.keystore-list-v 并且我成功地创建了我的android和IOS密钥。包名称,sha1,...正确导入: 下面是googlemap-pl