问题

新搭建的一个项目,在使用fetch进行网络请求的时候遇到一个报错:
TypeError: Network request failed.
尝试直接在浏览器打开url访问可以正常拿到返回值。(url是http协议)

原因

这个API请求是http的协议请求,在iOS9以上系统,已经把http协议的请求限制了。
iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS协议。

解决方案

  1. xcode中打开react native中的ios项目根目录;
  2. 打开项目下的info.plist文件;
  3. App Transport Security Settings下新增Allow Arbitrary Loads,值为YES;
  4. 重启react native项目,刷新,请求后返回值正常;