iOS上的Ionic不向外部Api发送请求

时间:2016-04-08 12:55:35

标签: angularjs ionic-framework cors asp.net-web-api2

我在WebApi2中编写了自定义api,它在json中提供一些数据。我正在尝试使用Angular的$ http从iOS和Android上的Ionic访问该特定API。在Android上一切正常,我收到了正确的结果。但是在iOS上发生了奇怪的事情,因为$ http甚至不发送请求并立即抛出错误,返回http状态代码0.此问题仅存在于iOS模拟器和iPhone上。此外,在请求任何其他站点或虚假测试API时,此行为是不可观察的。

我已经尝试过:

  • 添加“Access-Control-Allow-Origin:*”标题。
  • 将代理添加到ionic.project,但这仅在运行Ionic Serve时解决了问题
  • 添加config.xml
  • 通过设置此项来配置角度以使用跨域:

    $ httpProvider.defaults.useXDomain = true; 删除$ httpProvider.defaults.headers.common ['X-Requested-With'];

任何线索?也许这是服务器端问题?

1 个答案:

答案 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)。

相关问题