在离子应用程序中将域列入白名单
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 文件中?如果没有,那么添加这行代码:<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
我添加了这个元标记,但我仍然有 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 |如何按域列入白名单?