javascript - 如何配置 app.json 以接受所有连接类型,例如 HTTP 请求?

标签 javascript android react-native expo fetch-api

在我的 Expo React Native 应用程序中,我一直在尝试从 Ruby on Rails API 获取数据,但似乎不允许 http 连接。

我发现的所有解决方案要么将配置添加到 Android 中的 AndroidManifest.xml 中,要么将配置添加到 iOS 中的 Info.plist 中,但我无法访问这些配置与其退出,不如在世博中继续发展。我尝试将 localhost 更改为 127.0.0.110.0.2.2 以及我机器的 IP,但没有成功。我查看了 configuration with app.json 的文档和 networking但我在 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 在哪个域上? 我在从 React Native 应用程序(在模拟器上运行)获取到 Node.js/express REST api 时遇到了同样的问题。我在 React 中找不到解决方法。

我找到了 ngrok 的解决方案( https://ngrok.com )。它允许您向外部公开特定的本地域:端口。通过这种方法,我能够从我的应用程序获取数据到我的 REST api。

需要明确的是,我不确定问题出在 React-Native 端。我怀疑是我的防火墙不允许连接通过。我没有搞乱所有这些设置,而是简单地使用了 ngrok。

关于javascript - 如何配置 app.json 以接受所有连接类型,例如 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318120/

相关文章:

javascript - 呈现具有动态标题的表格

javascript - 在 D3.js 中使用字典绘制图表

java - 如何动态计算表中的数据

reactjs - React Native 的 Firebase 初始错误(无法读取未定义的属性 'getItem')

javascript - Number(id) 或 +id 根据输入值产生不同的值

javascript - 当 id 到达浏览器视口(viewport)顶部时在 JavaScript 中执行操作

android - 无法在android的 ListView 中获取点击的行号

android - 在 SDK 8 中使用 Android MediaPlayer 进行流式传输

java - com.facebook.react.bridge.WritableMap.copy() 在空对象引用上

xcode - React Native - 多个目标