我在WebApi2中编写了自定义api,它在json中提供一些数据。我正在尝试使用Angular的$ http从iOS和Android上的Ionic访问该特定API。在Android上一切正常,我收到了正确的结果。但是在iOS上发生了奇怪的事情,因为$ http甚至不发送请求并立即抛出错误,返回http状态代码0.此问题仅存在于iOS模拟器和iPhone上。此外,在请求任何其他站点或虚假测试API时,此行为是不可观察的。
我已经尝试过:
通过设置此项来配置角度以使用跨域:
$ httpProvider.defaults.useXDomain = true; 删除$ httpProvider.defaults.headers.common ['X-Requested-With'];
任何线索?也许这是服务器端问题?
答案 0 :(得分:0)
在低于9.0的iOS版本上是否也会发生这种情况?因为自iOS 9.0以来$ http存在一些问题。如果没有,则会查看this文章。
寻找解决方案
当我开始搜索此错误时,我找到了此论坛帖子。它 说贡献者也得到了这个错误并且错误 使用$ http服务发出网络请求时触发。一世 在我的应用程序中也使用了$ http,但我没有通过它提出任何请求 当应用程序启动时另外,在论坛帖子中说它了 通过向网络请求添加自定义标头来触发问题。至 解决问题,标题不应该有一个前导空格 值。我有自定义标题,但我之前没有任何空格 值。所以我决定,(事实证明是错误的),这篇文章 无法帮助我。
以下是我接下来尝试的内容:
我再次阅读了Ionic博客文章中的所有建议并尝试过 将它应用于我的项目 - 它没有帮助。我决定像我一样 得到供应商文件中的错误,我应该尝试更新Ionic 框架,离子CLI和所有第三方库(Angular, Restangular,ngStorage,...) - 花了一些时间,但当我跑了 应用程序再次我得到了同样的错误。我创造了一个新的" clear"离子应用程序和 它运作正常 - 所以我确信问题出在了某处 我的代码。我开始调试应用程序并在我的代码中挖掘 "老派的方式" - 试图删除代码块,看看是否 应用程序然后工作(因为我有可能之前得到错误 使用任何Safari开发工具进行调试)。通过这种方式我发现了哪个 我的代码中的行触发了此错误。就是这条线:
$http.defaults.headers.common.Authorization = 'Basic ' + $localStorage.user.authToken;
我依赖自己使用自己的服务 在服务时执行一行代码(见上文)的注入 已初始化。这就是为什么$ http服务也导致了 我遇到的错误。我从我的代码中删除了这一行 在配置中用授权令牌头替换它 每个请求,如下:
$http.post(appConfig.apiUrl + 'profile', data, { headers: {'Authorization': $localStorage.user.authToken} })
之后我的应用程序开始加载(Hurray)让我看到其他一些 问题(Booo)。