Cordova Android加载资源失败:net::ERR_NAME_NOT_RESOLVED

16

我今天升级了最新的Cordova-5.4.1。iOS上的应用程序一切正常,但在Android上不行。所有请求都返回404错误,所以我深入研究了这个问题,发现我需要安装“cordova-plugin-whitelist”。我安装了它并将 <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval'">

添加到index.html的头部以及<access origin="*" /><allow-navigation href="*"/>添加到config.xml中

现在对外部网络的每个请求都返回“net::ERR_NAME_NOT_RESOLVED”

在AndroidManifest.xml中,我有这两行,所以我想这不是Internet访问的问题。 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

我查看了与cordova-plugin-whitelist相关的许多SO问题,但似乎没有什么起作用的。

我的config.xml ```

<?xml version='1.0' encoding='utf-8'?>
<widget id="app" version="1.1.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>app</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <allow-navigation href="*" />
    <platform name="ios">...splash screens and icons</platform>
    <platform name="android">...splash screens and icons</platform>
    <icon src="resources/android/icon/drawable-xhdpi-icon.png" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />
    <preference name="Orientation" value="default" />
    <feature name="phonegap-parse-plugin">
        <param name="id" value="org.apache.cordova.core.parseplugin" />
        <param name="url" value="https://github.com/fastrde/phonegap-parse-plugin" />
    </feature>
    <feature name="Insomnia (prevent screen sleep)">
        <param name="id" value="nl.x-services.plugins.insomnia" />
        <param name="url" value="https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin.git" />
    </feature>
    <feature name="Toast">
        <param name="id" value="cordova-plugin-x-toast" />
        <param name="url" value="https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin.git" />
    </feature>
    <feature name="Cordova SMS Plugin">
        <param name="id" value="com.cordova.plugins.sms" />
        <param name="url" value="https://github.com/cordova-sms/cordova-sms-plugin.git" />
    </feature>
    <feature name="OpenTokCordovaPlugin">
        <param name="id" value="com.tokbox.cordova.opentok" />
        <param name="url" value="https://github.com/doxyme/cordova-plugin-opentok" />
    </feature>
</widget>

```


你是否正在使用 cordova-plugin-whitelist 并已配置 Content-Security-Policy?你之前使用的 cordova 版本是什么? - QuickFix
我曾经遇到过这个问题。后来发现是因为网络速度慢引起的。 - Yusuf
7个回答

24

我不知道问题出在哪里,但重新启动设备解决了它。这与应用程序无关,只是手机连接到互联网时出现了困难,尽管它已连接到Wi-Fi并且信号强度似乎达到最大。


好的。确实,如果cordova-whitelist-plugin参与其中会很奇怪,因为带有空Content-Security-Policy<allow-navigation href="*" />应该让所有内容通过。很高兴你解决了问题。 - arainone
我在空的Content-Security-Policy中使用了<allow-navigation href="*" />,直到我重启设备才起作用。我简直不敢相信重启设备也解决了我的问题。 - alicona
1
升级了,因为我遇到了同样的问题,因为我忘记启用 Wi-Fi。 - Joe Thomas
1
难过啊...它能够工作。现在,我该如何向我的用户解释呢?!?他们怎么能想象到如果应用程序不工作,他们就必须重新启动它呢? - Nowdeen
真的吗,安卓??浪费了很多时间来解决这个问题。@Pawel 谢谢!我一直在尝试在 Mac 上使用 dnsmasq,这篇文章帮了我大忙。 - greaterKing

4
在您的应用程序的“config.xml”文件中,只需放置以下内容:
<allow-navigation href="*" />

请移除您在index.html头部添加的内容。

如果还是不行,那么您的问题与白名单插件无关。

我在其他Android项目中使用了这个插件,从未遇到过需要更多操作才能让我的应用与后端通信的情况。

希望这有所帮助!


1
很遗憾,这并没有帮助。我编辑了我的问题并添加了config.xml。 - Paweł Wszoła
啊,我跳过了“并删除您添加的index.html”这部分。当我这样做时,我得到了“未找到内容安全策略meta标签。使用cordova-plugin-whitelist插件时,请添加一个。”并且请求返回完全相同的错误“net::ERR_NAME_NOT_RESOLVED”。 - Paweł Wszoła
抱歉,我不知道这个要求,这似乎是一个相对较新的要求。 - arainone

1
我们遇到了一个类似的问题,当在使用Cordova 6.4.0和版本25(7.1.1)的Android SDK的HAXM中运行安卓模拟器时,在两个不同的系统上,我们收到了“Failed to load resource net::ERR_NAME_NOT_RESOLVED”的错误。只需删除并重新添加白名单插件即可解决我们的问题而无需更改任何配置文件。

0

我曾经遇到同样的问题,但似乎没有什么解决办法...后来我发现,在我的情况下,启动画面图片的大小太大了(约3.2MB)...我使用这个网站压缩了文件,然后问题得到了解决。


0

看起来你正在尝试发送请求,但是你处于离线状态,请检查网络连接。


0
对我而言,提到的解决方案都没有生效。最终有效的方式是直接从代码库添加插件:
cordova plugin rm cordova-plugin-inappbrowser --force
cordova plugin add https://github.com/apache/cordova-plugin-inappbrowser.git

如果问题仍然存在,您可以尝试删除并重新添加平台:
cordova platform save
cordova platform rm <platform>
cordova platform add <platform>

0

重新启动设备似乎可以在本地解决这个问题,但是这个工作总是从支持部门回到我这里。因此,我希望有一个解决方案而不是权宜之计。

白名单插件还具有内容安全策略声明:

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

这似乎已经解决了我的问题,但只有时间会证明,因为我无法按需复制此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接