问题描述
我有一个在 android 模拟器上运行的 React Native 应用程序,我正在尝试向位于 https://dev.mywebsite.com/api 的本地 api(在我的笔记本电脑上运行)发出请求。该域在模拟器中是主机归档的,如下所示:
/etc/hosts
和 /system/etc/hosts
和 /etc/system/hosts
都有:
127.0.0.1 localhost
::1 ip6-localhost
10.0.2.2 dev.mywebsite.com
注意:我也试过我的本地ip地址192.168.1.13
该域有一个真正的 ssl 证书,我可以在模拟器上从 chrome 访问它,没有问题。
将我的 api 调用更改为部署在生产中的目标 https://mywebsite.com/api 确实有效。
出于某种原因,运行 adb shell
并 ping dev.mywebsite.com
显示 127.0.0.1?
为什么模拟器中的 chrome 可以工作,而我的 React Native 应用程序却不能?如果你帮我解决这个问题,我会很兴奋:) 也许有一些解决方法?我会投入代表赏金。
编辑
我让它在物理设备(不是模拟器)上工作。我使用了一个名为“Hosts Go”的应用程序将文件托管到 192.168.1.13 并且它工作正常。为什么 Hosts Go 应用程序可以运行,而模拟器主机文件却不能?我无法在我的物理设备上编辑主机文件,因为它没有进行测试。
解决方法
好吧,如果这不是调试更棘手的问题......
在您的主机文件末尾添加一个空行。
如果您的主机文件没有 Chrome,出于某种原因它可以工作,但来自您的应用的请求不会。