2017-04-07 109 views
0

我在React Native中有登錄功能,我嘗試獲取數據。功能如下:Fetch在React Native中不起作用ios

onLogin: function() { // 
     const self = this; 
     self.setState({modalVisible: true, modalMessage: 'Signing in'}); 
     fetch('http://psa.autralis.com/manager/api/v1/obtain-auth-token/', { 
      method: 'POST', 
      headers: { 
       'Content-Type': 'application/json', 
      }, 
      body: JSON.stringify({ 
       username: self.state.username, 
       password: self.state.password, 
      }) 
     }) 
      .then(response => response.json()) 
      .then(data => console.log(data)) 
      .catch((error) => { 
       console.warn(error); 
      }); 
    }, 

但由於某些原因,它不上IOS工作。我得到一個錯誤:

enter image description here

在Android上它的工作原理,和我一起郵差測試它還有也適用。

有什麼想法?

回答

1

這個問題的原因是:iOS默認不允許http請求,只有https。如果你需要使用http做這個,只需更改你的info.plist:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 
+0

我解決了它已經和我添加的溶液。但我會接受你的回答。 – Boky

0

萬一別人需要它。我加入

<key>NSAllowsArbitraryLoads</key> 
<true/> 

Info.plist文件位於ios文件夾內的項目解決了這個問題。

因此我改變

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSExceptionDomains</key> 
     <dict> 
     <key>localhost</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
     </dict> 
    </dict> 

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> 
     <true/> 
     <key>NSExceptionDomains</key> 
     <dict> 
     <key>localhost</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
     </dict> 
    </dict> 
相關問題