2016-08-18 35 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