2016-08-18 44 views
0

我們正在用Symfony api創建一個Ionic應用程序,並且在iOS上登錄時我們遇到$ http的問題。當登錄或密碼不正確時,$ http永遠不會收到來自api的響應,並在狀態爲0的30秒後超時,儘管Android上的所有代碼都可以正常工作(api響應與平臺無關)。我們嘗試了很多不同的東西,但似乎iOS拒絕接收針對此特定請求的響應。其他請求正常工作,響應和狀態按預期收到。下面是登錄請求代碼

$http.defaults.headers.common.Authorization = 'Basic ' + Base64.encode(user + ':' + password); 
$http.get("https://myserver.com/api/login") 
.success(function(data, status) { 
     console.log("success"); 
}) 
.error(function(error, status) { 
     console.log("error"); 
}); 

難道有人曾經遇到這樣的問題與iOS,甚至不知道如何解決它(或者至少對其進行調試!)? 我不知道什麼代碼可以讓你幫助我們,所以讓我知道!

編輯:
尚未找到解決方案,但現在我明白了這個問題!
當http基本響應的狀態是401時,它設置一個名爲WWW-Authenticate的標頭。但科爾多瓦不喜歡這個頭(因爲可能的「在」標頭值),所以沒有發送到應用程序的響應...

的apache的問題:
https://issues.apache.org/jira/browse/CB-2415
另一個SO後相關:
Handling HTTP 401 with WWW-Authenticate in Cordova/Ionic iOS application

所以現在我的問題發生了變化:我如何從Symfony Http Basic Authentification的響應中刪除標題?

+0

沒有意思是迂腐是固定的,但我認爲.success()和.error ()方法已被棄用。 – Ladmerc

+0

根據w3c的說法,你是對的,好的方法是$ http.get('/ someUrl',config).then(successCallback,errorCallback),但是這個不起作用 – Pchevald

回答

0

這是一個有點硬沒有錯誤調試一下,但你可以嘗試:

  • 假設您的網址是不是基於HTTPS,你的錯誤是最有可能是由於IOS阻擋非HTTP請求。它可以通過添加此cordova hook

  • 嘗試將域添加到白名單中的config.xml這樣<allow-navigation href="https://myserver.com/*"/>

+0

是的,缺少錯誤信息是這個bug的最大問題!我所有的URL都是基於https的,這個請求是唯一不起作用的。白名單安裝併爲每個參數配置了'href =「*」'(我也嘗試'href =「https://myserver.com/*」'沒有成功) – Pchevald