javascript - 如何配置 app.json 以接受所有连接类型,例如 HTTP 请求?
问题描述
在我的 Expo React Native 应用程序中,我一直在尝试从我的 Ruby on Rails API 中获取数据,但似乎不允许使用 http 连接。
我发现的所有解决方案要么在我无法访问AndroidManifest.xml
的 Android 和iOS 中添加配置,但我宁愿在 Expo 中继续开发而不是退出。Info.plist
我也尝试过更改localhost
为127.0.0.1
,10.0.2.2
和我的机器的 IP,但没有任何效果。我查看了有关使用 app.json和网络进行配置的文档,但我找不到任何有关在 Expo 中配置应用程序传输安全性的信息。我目前正在 android 9.0 Pie 上运行 Expo。
fetch(`http://localhost:3000/api/v1/trainers`, {
headers: {
Accept: 'application/json',
"Content-Type": "application/json"
},
}).then(res => res.json())
.catch(err => console.log(err));
TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (420454d9-7271-44d5-b…-3a968d130699:48065)
at XMLHttpRequest.dispatchEvent (420454d9-7271-44d5-b…-3a968d130699:53513)
at XMLHttpRequest.setReadyState (420454d9-7271-44d5-b…-3a968d130699:52368)
at XMLHttpRequest.__didCompleteResponse (420454d9-7271-44d5-b…-3a968d130699:52195)
at 420454d9-7271-44d5-b…-3a968d130699:52305
at RCTDeviceEventEmitter.emit (420454d9-7271-44d5-b…-3a968d130699:22482)
at MessageQueue.__callFunction (420454d9-7271-44d5-b…-3a968d130699:22097)
at 420454d9-7271-44d5-b…-3a968d130699:21854
at MessageQueue.__guard (420454d9-7271-44d5-b…-3a968d130699:22051)
at MessageQueue.callFunctionReturnFlushedQueue (420454d9-7271-44d5-b…-3a968d130699:21853)
解决方案
您的 REST api 在哪个域上?从反应本机应用程序(在模拟器上运行)获取到 node.js/express REST api 时,我遇到了同样的问题。我在 React 中找不到解决方法。
我找到了一个使用 ngrok ( https://ngrok.com ) 的解决方案。它允许您向外部公开特定的本地域:端口。使用这种方法,我能够从我的应用程序获取到我的 REST api。
需要明确的是,我不确定问题出在 React-Native 端。我怀疑是我的防火墙不允许连接通过。我没有搞乱所有这些设置,而是简单地使用了 ngrok。
推荐阅读
- linux - Linux cmake在文件(GLOB)命令中停留了几个小时
- html - 反应原生 webview 静态 HTML 不显示在 Modal 中
- c++ - 如果 8 字节由不同的线程写入,是否可以保证在现代英特尔 x86 上读取 8 字节?
- c# - .Net Core 动态 dbContext
- botframework - 在 Directline 4.0 网络聊天中集成认知语音
- java - 有什么方法可以显示执行中的 jmap 转储进度
- r - 如何从 HTML 对象中提取所有信息(包括未显示的信息)
- android - android 8.0 上的广播接收器无法正常工作
- sql - 不使用 COUNT 操作 ORACLE 打印表中行数的简单过程
- oracle - 将 SQL Server 代码转换为 Oracle 函数