真正的IOS设备不会发出网络请求 - React Native

时间:2017-10-30 12:07:02

标签: ios reactjs amazon-web-services react-native

我试图让我的React Native应用程序在真正的iPhone上工作,这样我就可以开始将该应用程序与branch.io集成。出于某种原因,我无法让我的应用程序向AWS上的后端api发出网络请求。当我使用localhost:3000 / auth / login /命中我的本地开发环境中的后端api时,我的代码在模拟器中按预期工作。以下是我努力的结果。

HTTP类帖子方法:

post(endpoint, body, auth = null) {

  console.log(this.apiUrl + endpoint);
  console.log(this._headers(true));
  console.log(body);

  return Observable.defer(() => {
    return Observable.fromPromise(fetch(this.apiUrl + endpoint, {
      method: 'post',
      headers: this._headers(auth),
      body: JSON.stringify(body)
    })
    .then(this._checkStatus)
    .then(res => res.json()));
  });
}

_headers(auth) {
  let token = (auth) ? token = Config.clientId : this.accessToken;
  let headers = new Headers({
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + token
  });

  return headers;
}

在我的iOS设备上构建代码后,我尝试登录并且没有任何反应。我在我的帖子请求中添加了控制台调用,以确保传递正确的值,这似乎是正确的。下面是我在运行调试模式时尝试登录时看到的结果。我是React Native的新手,所以我不确定网络选项卡是否会检测来自真实设备的请求,但是没有任何网络呼叫的迹象。

enter image description here

从Postman运行同样的确切调用按预期工作,可以在下面看到:

enter image description here

非常感谢任何帮助。提前谢谢你。

1 个答案:

答案 0 :(得分:0)

由于您可能使用的是HTTP而非HTTPS,因此您需要启用NSAppTransportSecurity并将您的域添加到info.plist中的NSExceptionDomains列表。

您可以通过启用NSAllowsArbitraryLoads完全禁用安全检查。但是,虽然对于开发目的很有用,但最好让您的开发环境更像您的发布或生产,从而最大限度地减少错误和回归。 (在生产中使用NSAllowsArbitraryLoads有一个明智的理由,但如果你只是在与一个后端对话,那么你就不需要它了。)

您可以了解ATS here的设置(转到ATS配置基础)。