我试图让我的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的新手,所以我不确定网络选项卡是否会检测来自真实设备的请求,但是没有任何网络呼叫的迹象。
从Postman运行同样的确切调用按预期工作,可以在下面看到:
非常感谢任何帮助。提前谢谢你。
答案 0 :(得分:0)
由于您可能使用的是HTTP而非HTTPS,因此您需要启用NSAppTransportSecurity
并将您的域添加到info.plist中的NSExceptionDomains
列表。
您可以通过启用NSAllowsArbitraryLoads
完全禁用安全检查。但是,虽然对于开发目的很有用,但最好让您的开发环境更像您的发布或生产,从而最大限度地减少错误和回归。 (在生产中使用NSAllowsArbitraryLoads
有一个明智的理由,但如果你只是在与一个后端对话,那么你就不需要它了。)
您可以了解ATS here的设置(转到ATS配置基础)。