React Native fetch() 网络请求失败

2022-08-30 01:26:14

当我使用(RN版本0.29.1)创建一个全新的项目并将渲染方法中的提取放入公共Facebook演示电影API时,它会抛出一个.有一个非常无用的堆栈跟踪,我无法在chrome控制台中调试网络请求。以下是我要发送的抓取:react-native initNetwork Request Failed

fetch('http://facebook.github.io/react-native/movies.json')
      .then((response) => response.json())
      .then((responseJson) => {
        return responseJson.movies;
      })
      .catch((error) => {
        console.error(error);
      });

答案 1

这里的问题是iOS默认情况下不允许HTTP请求,只允许HTTPS。如果要启用 HTTP 请求,请将其添加到您的 :info.plist

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

答案 2

不建议允许所有域都使用 http。仅为必要的域设置例外。

来源: 在 iOS 9 和 OSX 10.11 中配置应用传输安全例外

将以下内容添加到应用的 info.plist 文件中:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>