React Native Network请求在获取时失败 - Works Local

时间:2016-07-01 06:27:26

标签: ios cors react-native simulator

我在React Native组件中使用了一些代码,这是一个简单的提取,将参数传递给OMDB API。这可能是一个CORS问题,因为如果我以下面的格式运行它直接到omdbapi.com它总是失败网络请求失败。但是,此请求适用于同一网络上的Android模拟器。

   // The fetchData function makes an AJAX call to the OMDB API.
   fetchData(movieinput) {
     console.log("In fetch");
       // We pass the movie the user entered in into the URL for the API call.
       fetch('http://www.omdbapi.com/?t='+movieinput+'&y=&plot=short&r=json')
           .then((response) => response.json())
           .then((responseData) => {
               // After the data is recieved, we set this.state.movie to the result of the API call.
               this.setState({
                   movie: responseData,
               });
           })
           .done();
   }

但是,如果我将相同的代码运行到将远程请求包装到localhost请求中的本地URL,则它可以正常工作。

   fetchData(movieinput) {
     console.log("In fetch");
       // We pass the movie the user entered in into the URL for the API call.
       fetch('http://localhost:3000/movie/'+movieinput)
           .then((response) => response.json())
           .then((responseData) => {
               // After the data is recieved, we set this.state.movie to the result of the API call.
               this.setState({
                   movie: JSON.parse(responseData),
               });
           })
           .done();
   }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题可能是App Transport Security,这是一项iOS特定限制(默认情况下)强制应用程序使用https进行所有网络通信。这是一个视频教程,解释如何调整ATS,以便您的反应原生应用程序可以工作:http://codecookbook.co/post/how-to-make-network-requests-in-react-native/