2016-06-13 59 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

相關問題