2016-03-29 42 views
1

首先,通過http的常規Ajax請求正常工作。當我嘗試通過https執行完全相同的Ajax請求(GET)時,問題就開始了。Android的Cordova應用程序(在XDK中構建)通過HTTPS阻止Ajax請求

在使用WEINRE進行調試時,我可以在網絡選項卡中看到請求處於掛起狀態,但是我收到了假的空響應,其中包含status = 0和其他空屬性。更重要的是,服務器端從未得到這些請求。看起來Android只是不讓他們走。

在構建應用程序之前,我在XDK的各個構建設置中設置了通配符*<access>,<allow-intent>,<allow-navigation>。我還增加了以下CSP:

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

更多的事實:

1)如果我建立的iOS相同的應用程序,它的工作沒有任何問題。所以這只是Android的麻煩。

2)通過https的Ajax請求有時可用,但很少。所以我不能說他們每次都被阻止,但是我也無法找到它在什麼時候運作,什麼時候沒有的情況。但大多數時候它不起作用。

3)前段時間效果很好。我談論的行爲不久前就出現了。我認爲這個問題可能與服務器端的SSL證書有關(例如,它已過期),但桌面瀏覽器不報告任何問題。 URL字符串仍然是綠色的。

+0

你可以用https://www.ssllabs.com/ssltest/測試你的服務器嗎?結果是否談論不完整的鏈? – Tom

+0

@Tom,ssllabs.com不允許檢查自定義端口上的服務器(不是443)。我的服務器在8085上。我用http://ssl-checker.online-domain-tools.com代替。是的,它返回了我的服務器SSL證書不受信任。那麼,這可能是原因嗎?但是,桌面瀏覽器不報告任何問題,URL字符串是綠色的。 – splash27

+0

可能是帶有中間證書的證書鏈的問題。 – Tom

回答

0

給予許可,不得以menifest.xml文件 與

<uses - permissions>

標籤

+0

我應該添加哪個權限? – splash27

0

確認!問題在於SSL證書。該服務器在Firefox中也無法訪問。當我更改證書時,一切都開始正常工作。

相關問題