2016-06-13 60 views
1

在Android上运行应用程序(在iOS上可用)时,AJAX调用失败。这是错误(其实是一个警告)我看到在Chrome浏览器开发工具:在发布模式下运行Android Cordova应用程序时,Ajax调用失败

临时标题显示

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的新版本有关。 下面是工具的版本我有:

  • 节点版本:v4.4.3
  • 科尔多瓦版本:6.2.0
  • [email protected]
  • Android SDK最新版

我没有设置在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'"> 

有没有其他的科尔多瓦设置我忘了设置?我已经删除并重新添加了Android平台到我的项目中,更新了我所有的插件,但我仍然得到相同的Ajax错误。

请帮忙。

+0

您现在有解决方案吗?我有同样的问题,不确定是否有SSL问题。它只发生在一些设备上,比如moto x。 –

+0

是的,这是一个SSL问题。 Android最新版本并未完全信任HTTPS证书。一旦使用更强大的加密技术重新生成了证书,该应用即可在Android上重新开始工作。 – Yuri

回答

-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); 

此外,当请求从科尔多瓦或使用AJAX来,再有AJAX请求两个呼叫: 第一个呼叫为选项,其中,API返回只允许头&方法 该第二后是实际API调用哪个呼叫API。

+0

仍然无法正常工作。该请求甚至没有到达服务器。此外,为什么它在iOS上而不是在Android上工作? – Yuri

相关问题