После нескольких часов попыток я не могу заставить мое приложение React Expo (localhost http://192.168.1.113: 19006 / # / ) подключиться к моему PHP API, который размещен на внешнем сервере.
Заголовок моего файла API выглядит следующим образом:
header("Access-Control-Allow-Origin: *");
//header("Access-Control-Allow-Headers: *");
//header("Access-Control-Allow-Credentials: 'true'");
header("Content-Type: application/json");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
Когда я использую почтальон для подключения и тестирования моего файла /login.php со следующим json body;
POST для: www.URLofAPIlocation.nl/subFolder/api/login.php
{
"email" : "info@email.nl",
"password" : "Password12345"
}
API возвращает токен JWT и успешно возвращает сообщение, как и ожидалось.
{
"message": "Successful login.",
"jwt": "eyJ0eXA..... ( FULL TOKEN )"
}
Но когда я попробуйте подключиться к следующим функциям в моем собственном родном приложении, оно пытается использовать базовый URL-адрес localhost, а не заданное;
async function postData(url = '', data = {}) {
const response = await fetch(url, {
method: 'POST',
mode: 'cors', // Without cors it fails.
cache: 'no-cache',
// credentials: 'same-origin', // Not sure if needed.
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST',
'Access-Control-Max-Age':' 3600',
},
redirect: 'follow',
referrerPolicy: 'no-referrer',
body: JSON.stringify(data)
});
return await response.json();
}
// https://www.URLofAPIlocation.nl/... and https://URLofAPIlocation.nl/ also not working
function login(){
postData('www.URLofAPIlocation.nl/subFolder/api/login.php', {
email : "info@email.nl",
password : "Password12345",
})
// Other option without error catching. (not working..)
// .then((data) => {
// console.log(data); // JSON data parsed by `response.json()` call
// });
.then(response => {
console.log(response)
return response.json()
})
.then(response => {
console.log("End query"+ response);
return response;
})
.catch(err => {
console.log("Error: "+err)
});
}
Я не уверен, что я делаю неправильно, так как каждый учебник и документация, которые я нахожу точно такая же настройка, как я использую.
Сообщение об ошибке выглядит следующим образом:
POST http://192.168.1.17:19006/www.URLofAPIlocation.nl/subFolder/api/login.php 404 (Not Found)
Похоже, что реагирующая экспо использует свое собственное местоположение в качестве базового URL-адреса и добавляет URL-адрес выборки после него. Расположение API отклоняется от курса: http://192.168.1.17: 19006 / /. Я не могу найти, где изменить или удалить это, поэтому помощь будет очень цениться.
Заранее спасибо! Ps по личным причинам я скрыл точный веб-адрес местоположения API и пароли. API находится в домене https и функционирует, как и ожидалось.