Подключение PHP Api на сервере с приложением React expo localhost. Базовый URL не работает - PullRequest
1 голос
/ 31 января 2020

После нескольких часов попыток я не могу заставить мое приложение 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 и функционирует, как и ожидалось.

...