React-Native fetch,网络请求失败。不使用localhost [英] React-Native fetch, Network request failed. not using localhost
问题描述
我有一个应用程序,我使用fetch来验证用户身份。它在几天前工作,我没有改变任何东西。刚刚从0.27升级到0.28,没有提取不起作用。
我搜索了将近2天,我已经阅读了stackoverflow中的几乎所有问题。大多数用户试图从localhost获取内容,当他们将其更改为实际的IP地址时,他们就可以使用它。
但是我没有从localhost获取任何东西,我的代码也曾用过。
这是我的代码:
fetch('http://somesite.com/app/connect', {method:'POST',headers: {'接受':'application / json','Content-Type':'application / json','language':'en-US','Authorization':'Bearer'+ access_token,},body:JSON.stringify ({uid:uid,refresh_token:refresh_token,token:access_token,device:device_id,device_name:device_name,})})。then((response)=> response.json())。then((responseData)=> {console.log(JSON.stringify(responseData.body))})。catch((err)=> {console.log('发生了一些错误'); console.log(错误);})。done() ;
我试图制作一些新项目,简单,只是用过一个简单的fetch示例来自教程,它给出了同样的错误。我试图打开我的网站,我试图连接到它,通过模拟器中的浏览器,它的工作原理,但似乎通过我,应用程序无法连接到任何网站/ IP。它在chrome控制台中出现此错误:
TypeError:网络请求在XMLHttpRequest.xhr.onerror上失败了
(http: //localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:28193:8)
。在XMLHttpRequest.dispatchEvent(HTTP://本地主机:8081 / index.ios.bundle ?平台= IOS&安培; dev的=真安培;热=真:14591:15)
。在XMLHttpRequest.setReadyState(HTTP://本地主机:8081 / index.ios.bundle平台= IOS&安培; dev的=真安培;热= true:29573:6)
在XMLHttpRequest .__ didCompleteResponse(http:// localhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:29431:6)
at http:// localhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:29506:52
at RCTDeviceEventEmitter.emit(http:// localhost:8081 / index.ios。 bundle?platform = ios& dev = true& hot = true:13428:23)
在MessageQueue .__ callFunction(http:// localhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:11999:23)
at http:// l ocalhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:11906:8
at guard(http:// localhost:8081 / index.ios.bundle?platform = ios& dev的=真安培;热=真:11857:1)在MessageQueue.callFunctionReturnFlushedQueue(
的http://本地主机:8081 / index.ios.bundle平台= IOS&安培; dev的=真安培;热=真:11905:1 )
实际上我和这个用户有同样的问题:
I have an app, which im using fetch to authenticate user. it was working till few days ago and i haven't change anything. just upgraded from react 0.27 to 0.28, not fetch is not working.
i have searched for almost 2 days and i have read almost all questions in stackoverflow. most of users trying to fetch something from localhost, and when they change it to actual ip address , they get it to work. but im not fetching anything from localhost, also mine code used to be working.
here is my code :
fetch('http://somesite.com/app/connect', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'language':'en-US',
'Authorization': 'Bearer ' + access_token,
},
body: JSON.stringify({
uid: uid,
refresh_token: refresh_token,
token: access_token,
device: device_id,
device_name: device_name,
})
})
.then((response) => response.json())
.then((responseData) => {
console.log(JSON.stringify(responseData.body))
})
.catch((err)=> {
console.log('Some errors occured');
console.log(err);
})
.done();
i tried to make some new projects, simple, just used a simple fetch example fro tutorials, it gave same error. i tried to open my website which im trying to connect to it, through browser in emulator, it works, but it seems through my, app cannot connect to any website/ip. it gives this error in chrome console :
TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:28193:8)
at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:14591:15)
at XMLHttpRequest.setReadyState (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:29573:6)
at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:29431:6)
at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:29506:52
at RCTDeviceEventEmitter.emit (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:13428:23)
at MessageQueue.__callFunction (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11999:23)
at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11906:8
at guard (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11857:1)
at MessageQueue.callFunctionReturnFlushedQueue (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11905:1)
actually i have the same problem as this user here : React-native network request always fails
UPDATE : info.plist from xcode
any help will be appreciated!
You should check out this link: https://github.com/facebook/react-native/issues/8118
Looks like the issue emerged in React Native 0.28. Solution is to "Allow Arbitrary Loads" in the info.plist file found in the ios>build folder that React creates.
If you open the entire ios folder in xcode, then open this info.plist file you can create a new key to Allow Arbitrary Loads and it should fix your issue.
这篇关于React-Native fetch,网络请求失败。不使用localhost的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!