我們正在用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的響應中刪除標題?
沒有意思是迂腐是固定的,但我認爲.success()和.error ()方法已被棄用。 – Ladmerc
根據w3c的說法,你是對的,好的方法是$ http.get('/ someUrl',config).then(successCallback,errorCallback),但是這個不起作用 – Pchevald