Ajax请求不适用于cordova android应用程序

Posted

技术标签:

【中文标题】Ajax请求不适用于cordova android应用程序【英文标题】:Ajax request not working on cordova android Application 【发布时间】:2016-10-19 22:28:42 【问题描述】:

我有一个用于显示来自 JSON 网络服务的新闻的 cordova android 应用程序 当我创建 .apk 文件时,ajax 请求在网络浏览器上工作,但在 android 上不工作 应用链接https://github.com/Adib12/technologia

我的配置文件

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Technologia</name>
    <description>
        Suivre les actualités des nouvelles technologies
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Aouadi Adib ( AdibDev )
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
</widget>

我需要帮助

【问题讨论】:

Cordova 白名单插件添加了吗?你能发布你的 config.XML 吗? 我添加了你现在可以看到的配置文件 XML 文件看起来不错。发出ajax请求时有任何错误跟踪吗?您是否尝试过使用设备检查器进行调试 不,我的电脑上没有android SDK,你可以克隆它并修复它吗 会回复这个 【参考方案1】:

从您发布的 Github 链接中,您似乎正在尝试连接到 localhost URL。这在设备上运行时不起作用,因此您需要将其更改为您要连接的资源的名称或其 IP 地址(最好使用 DNS 名称)。

此外,我注意到您的 index.html 的 head 部分中没有 Content-Security-Policy 元标记 - 对于 Cordova 5 及更高版本,您将需要其中之一...这指定了您的应用可以使用哪些资源连接至。假设您要向其发出 Ajax 请求的服务在 http://myserver.mydomain.com 运行,您的 CSP 元标记需要如下所示:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://myserver.mydomain.com">

我写了一篇博文,介绍了为 Android 和 iOS here 设置内容安全策略。

请在您的 www/js/script.js 中将 localhost 更改为有效的服务器名称,特别是此处:

$.ajax(
            type: "POST",
            url: "http://localhost/sv/connect.php",
            data: formData,
            cache: false,
            dataType: 'JSON',
            success: onSucces,
            error: onError
        );

并在 head 部分的 www/index.html 中添加内容安全策略元标记。

【讨论】:

感谢我的 ajax 请求在 html 页面上的回答,例如在 actu.html、jeux.html 上 它对我不起作用。 android jelly bean 上的请求失败

以上是关于Ajax请求不适用于cordova android应用程序的主要内容,如果未能解决你的问题,请参考以下文章

地理定位不适用于科尔多瓦

Android 启动画面不适用于 Cordova 5.0.0

Cordova 文件插件不适用于 android sdk 30

Cordova 相机插件适用于模拟器,而不适用于 Android 设备

cordova-plugin-ionic-webview - 自定义方案不适用于 Android

谷歌地图不适用于 ionic cordova run android