我们正在用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