首页 文章

在发布模式下运行Android Cordova应用程序时,Ajax调用失败

提问于
浏览
1

在Android上以发布模式运行应用程序时,AJAX调用失败(适用于iOS) . 这是我在Chrome开发工具中看到的错误(确实是警告):

Provisional headers are shown

Request URL:https://server.com/api/index.php?ticket=ST-111111-ABCDEFG-cas

Request Headers
Provisional headers are shown
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:file://
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Google Nexus 5 - 6.0.0 - API 23 - 1080x1920 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.0.0 Mobile Safari/537.36
Query String Parametersview sourceview URL encoded
ticket:ST-111111-ABCDEFG-cas

Form Dataview sourceview URL encoded
request:{"param1":"val1","param2":"val2"}

调试模式下一切正常 . 我去年发布的Android版本仍然可以正常运行 . 所以它可能与新版Cordova有关 . 这是我的工具版本:

  • Node version: v4.4.3

  • Cordova version: 6.2.0

  • cordova-android@5.1.1

  • Android SDK up to date

我确实在config.xml中设置了这些设置:

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

我正在使用白名单插件:

<plugin name="cordova-plugin-whitelist" spec="1" />

我还在index.html文件中设置了这个元:

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

我忘了设置其他Cordova设置吗?

仅供参考,我已经删除并重新添加Android平台到我的项目,更新了我的所有插件,但我仍然得到相同的Ajax错误 .

请帮忙 .

2 回答

  • -1

    有完全相同的问题 . $ .ajax在调试版上运行良好 . 发布版本失败,状态码为0.问题是一周SSL证书 . 我将https更改为http,然后它也在发布中工作 . 看到:

    https://forum.ionicframework.com/t/cordova-plugin-whitelist-problem-only-in-release/43705/3

  • 1

    从API端api开发人员需要允许跨源头 .

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: CUSTOM_HEADERS);
    header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS);
    

    此外,当来自cordova或使用ajax的请求时,那里有ajax请求两个调用:第一个调用是for选项,其中api只返回允许的头和方法,在那之后是实际的api调用,调用api .

相关问题