React-Native fetch, сетевой запрос не выполнен. не использовать localhost
У меня есть приложение, которое im использует fetch для аутентификации пользователя. он работал до нескольких дней назад, и я ничего не меняю. просто обновленный от реакции 0,27 до 0,28, а не выборка не работает.
Я искал почти 2 дня, и я прочитал почти все вопросы в stackoverflow. большинство пользователей пытаются извлечь что-то из localhost, и когда они меняют его на фактический IP-адрес, они заставляют его работать.
но я не получал ничего от localhost, также использовался мой код.
вот мой код:
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();
Ответы
Ответ 1
Вы должны проверить эту ссылку: https://github.com/facebook/react-native/issues/8118
Похоже, проблема возникла у React Native 0.28. Решение заключается в "Разрешить произвольные нагрузки" в файле info.plist, найденном в папке ios > build, созданной React.
Если вы откроете всю папку ios в xcode, затем откройте этот файл info.plist, вы можете создать новый ключ для разрешения произвольных нагрузок, и он должен исправить вашу проблему.
![Разрешить произвольные нагрузки]()
Ответ 2
Установить info.plist у меня тоже не работает. Пытаюсь запустить на iOS.
Ответ 3
Эта проблема заключается в том, что код пытается получить конечную точку HTTP вместо HTTPS, что не рекомендуется. Если вы извлекаете данные с сервера localhost, простое решение - показать ваш сервер localhost через конечную точку Ngrok https.
Шаги:
Загрузите ngrok и запустите ngrok http 8081
из терминала /cmd, где вы должны сменить 8081 на локальный сервисный порт.
Ngrok предоставит вам конечную точку пересылки https, просто используйте ее для доступа к вашему локальному серверу.