我的服务器上有一个未配置https的后端。在使用http正常工作之前,一切正常。由于某种原因,我现在收到此错误:
TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (whatwg-fetch.js:504)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:580)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:394)
at XMLHttpRequest.js:507
at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
at MessageQueue.__callFunction (MessageQueue.js:366)
at MessageQueue.js:106
at MessageQueue.__guard (MessageQueue.js:314)
at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:105)
我用Google搜索,看起来问题出在http。与其他API上的https配合使用时效果很好。但是我没有配置http。有没有办法让它现在仅与http一起使用?
答案 0 :(得分:1)
如果您正在Android上进行测试,则需要启用clearTextTraffic
,以便系统允许您的应用通过HTTP进行通信。
在您的AndroidManifest.xml
中添加android:usesCleartextTraffic="true"
。
答案 1 :(得分:1)
好的。带有romin21的提示,我现在开始使用它。有一个文件
会覆盖您的AndroidManifest。因此,起初我尝试将其添加到AndroidManifest中,但是它当然不起作用,我已经将该文件覆盖了。但是,当我将后端的ip地址添加到该文件时,它可以正常运行
<domain includeSubdomains="false">YOUR IP</domain>
答案 2 :(得分:0)
解决方案之一是将以下代码添加到AndroidManifest.xml
文件
android:usesCleartextTraffic="true"
但是在我的情况下,我只想允许我的API域,所以我在android/app/src/res/xml/network-security-config.xml
文件中添加了以下代码。
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">localhost</domain>
<domain includeSubdomains="false">Your IP/Domain</domain>
</domain-config>
</network-security-config>
我希望这会有所帮助。谢谢!