在离子应用程序中将域列入白名单

Posted

技术标签:

【中文标题】在离子应用程序中将域列入白名单【英文标题】:whitelisting a domain in ionic app 【发布时间】:2015-08-23 21:55:26 【问题描述】:

我正在阅读

中的 ionic 教程
http://ccoenraets.github.io/ionic-tutorial/build-ionic-project.html

并在浏览器上运行应用程序

ionic serve

android中使用

ionic emulate android 

当我按照教程中的说明运行应用程序时,它在我的 chrome 浏览器上运行良好,但是当我尝试在模拟器上运行时,我看不到任何数据,它只是带有菜单的空屏幕。我怀疑是whilelist的问题并添加了

  <allow-navigation href="*" />

到我的 /config.xml 文件,但它仍然不起作用,我当前的 config.xml 文件是

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.ionicframework.conference472350" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>conference</name>
  <description>
        An Ionic Framework and Cordova project.
    </description>
  <author email="hi@ionicframework" href="http://ionicframework.com/">
      Ionic Framework Team
    </author>
  <content src="index.html"/>
  <access origin="*" />
  <allow-intent href="*" />
  <allow-navigation href="*" />
  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="android-minSdkVersion" value="16"/>
  <preference name="BackupWebStorage" value="none"/>
  <preference name="SplashScreen" value="screen"/>
  <preference name="SplashScreenDelay" value="3000"/>
  <feature name="StatusBar">
    <param name="ios-package" value="CDVStatusBar" onload="true"/>
  </feature>
  <platform name="android">
    <icon src="resources/android/icon/drawable-ldpi-icon.png" density="ldpi"/>
    <icon src="resources/android/icon/drawable-mdpi-icon.png" density="mdpi"/>
    <icon src="resources/android/icon/drawable-hdpi-icon.png" density="hdpi"/>
    <icon src="resources/android/icon/drawable-xhdpi-icon.png" density="xhdpi"/>
    <icon src="resources/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi"/>
    <icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
    <splash src="resources/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/>
    <splash src="resources/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi"/>
    <splash src="resources/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi"/>
    <splash src="resources/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi"/>
    <splash src="resources/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/>
    <splash src="resources/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/>
    <splash src="resources/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
    <splash src="resources/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/>
    <splash src="resources/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi"/>
    <splash src="resources/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi"/>
    <splash src="resources/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/>
    <splash src="resources/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
  </platform>
</widget>

我正在 chrome devtools 中调试应用程序,这是我在应用程序控制台中遇到的错误

Failed to load resource: net::ERR_CONNECTION_REFUSED

【问题讨论】:

您是否已将meta 标签添加到您的index.html 文件中?如果没有,那么添加这行代码:&lt;meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"&gt; 我添加了这个元标记,但我仍然有 1 个 ERR_CONNECTION_REFUSED 错误 【参考方案1】:

有趣的是,我在开发应用时遇到了同样的问题。

您是否正确安装了插件?你没有提到你有没有。

您需要先安装cordova whitelist plugin。我通过npm 做到了这一点。

我还在我的 config.xml 中添加了对资源的所有访问权限:

  <access origin="*" />
  <allow-intent href="*" />
  <allow-navigation href="*" />

不过,不建议这样做。相反,允许访问应用程序所需的资源。

【讨论】:

在我的应用程序的调试控制台上给出错误 No Content-Security-Policy 元标记。使用cordova-plugin-whitelist时请加一个plugins.plugins/cordova-plugin-whitelist/whitelist.js:23(匿名函数) 您能发布您的新 config.xml 的全部内容吗?如果您查看***.com/questions/30212306/…,它应该可以工作。 添加了完整内容。我没有看到有人写在 config.xml 中添加这些标签的位置。是这个问题吗 我添加了元标记并设法摆脱了一些错误,但我仍然有 1 个错误。 @raju - 您现在似乎遇到的错误与白名单无关。似乎防火墙可能会阻止您手机上的应用程序。尝试添加规则以允许连接到端口 5000 上的本地计算机。该应用只是被拒绝连接权限。

以上是关于在离子应用程序中将域列入白名单的主要内容,如果未能解决你的问题,请参考以下文章

AWS EC2 / Elastic Beanstalk |如何按域列入白名单?

如何在 JWT 过滤器中将 api 列入白名单

将 Firebase 动态链接中的网址列入白名单

如何使用 Flask CORS 将域列入白名单

如何使用CSP(内容安全策略)在WebForms项目中将动态创建的脚本列入白名单?

如何在负载均衡器 Laravel 后面的 nginx 中将远程 IP 地址列入白名单