2015-05-26 2 views
8

У меня есть виртуальная машина, работающая локально, которая построена с использованием Vagrant. Я могу зависнуть и перейти к URL прямо из браузера. По какой-то причине, когда я делаю один и тот же вызов в своем мобильном приложении с использованием API fetch, он продолжает давать мне ошибку Network request failed.Невозможно сделать вызовы API с помощью реагирования-native

Вот фрагмент кода:

fetchData() { 

    this.setState({ isLoading: true }); 

    var baseURL = 'https://192.168.33.33/api/session'; 

    console.log('URL: >>> ' + baseURL); 

    fetch(baseURL) 
    .then((response) => response.json()) 
    .then((responseData) => { 
    console.log(responseData); 
    }) 
    .catch(error => { 
    console.log(error); 
    }) 
    .done(); 
} 

В журнале baseURL есть возвращает правильный URL и ошибка выглядит так:

URL: >>> http://192.168.33.33/api/session 
TypeError: Network request failed {stack: (...), message: "Network request failed"} 
    message: "Network request failed" 
    stack: (...) 
    get stack: function() { [native code] } 
    set stack: function() { [native code] } 
    __proto__: Error 

Я думал, что это был вопрос когда моя виртуальная машина не была доступна каким-то образом моим приложением, поэтому я пошел дальше и развернул ее на реальном сервере, и она по-прежнему выдавала ту же ошибку.

Любые идеи?

+0

does 'https: // 192.168.33.33/api/session' может потребоваться какой-то заголовок на ваш запрос на получение? – lyjackal

+0

@lyjackal Я так не думаю, что все это делает код: http://d.pr/n/18BiU/3kXPWHcD –

+0

Если вы используете объект XMLHttpRequest вместо fetch, вы получаете ту же ошибку? Правильно ли установлена ​​CORS? – user2943490

ответ

4

Обнаружили проблему и решили ее.

Проблема была вызвана наличием самозаверяющего сертификата на сервере API без собственного СА.

Я мог бы попробовать создать собственный СА, а затем создать сертификат, но я пошел вперед и получил дешевый реальный сертификат SSL. Это решило проблему.

-1

Я думаю, что вы можете столкнуться с ограничением same origin policy.

Есть many способы обхода пути.

+0

Спасибо за ваш ответ! к сожалению, это было не так. –

+1

Это не относится к реагированию на собственные приложения. – Clintm

+0

такая же политика происхождения только для браузера! – Germinate

Смежные вопросы