IOS React Native fetch() POST:网络请求失败

IOS React Native fetch() POST : Network Request Failed

1) 以下代码在 IOS 上给我一个错误,但在 Android.

上工作

2) 在 IOS 上,我可以使用 "get" 进行获取,但 "post" 失败

所以这不适用于 ios :

    var data = new FormData();
    data.append("fileUpload", { uri: imageUri, name: filename, type: "image/jpeg" });
    data.append("filename", filename);
    data.append("name", "uploadedFile");
    const config = {
        method: "POST",
        headers: {
            Accept: "application/json",
            "Content-Type": "multipart/form-data;"
        },
        body: data
    };

    return fetch(url, config).then((response) => response.json())
        .then(res => { return res ;})
        .catch(error => {
            console.error(error);
            return { name: "network error", description: "" };
        });

我尝试根据其他 post(例如 )在 IOS 上修复 info.plist,但错误仍然存​​在

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>CFBundleDevelopmentRegion</key>
        <string>en</string>
        <key>CFBundleDisplayName</key>
        <string>myapp</string>
        <key>CFBundleExecutable</key>
        <string>$(EXECUTABLE_NAME)</string>
        <key>CFBundleIdentifier</key>
        <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleName</key>
        <string>$(PRODUCT_NAME)</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
        <string>1.0</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
        <string>1</string>
        <key>LSRequiresIPhoneOS</key>
        <true/> 
        <key>NSAppTransportSecurity</key>                   // i add this
        <dict>                                              // i add this
            <key>NSAllowsArbitraryLoads</key>               // i add this
            <true/>                                         // i add this
            <key>NSAllowsArbitraryLoadsInWebContent</key>   // i add this  
            <true/>                                         // i add this
        </dict>                                             // i add this 
        <key>NSCameraUsageDescription</key>
        <string>Your message to user when the camera is accessed for the first time</string>
        <key>NSLocationWhenInUseUsageDescription</key>
        <string></string>
        <key>NSMicrophoneUsageDescription</key>
        <string>Your message to user when the microsphone is accessed for the first time</string>
        <key>NSPhotoLibraryUsageDescription</key>
        <string>Your message to user when the photo library is accessed for the first time</string>
        <key>UIAppFonts</key>
        <array>
            <string>Zocial.ttf</string>
            <string>Feather.ttf</string>
        </array>
        <key>UILaunchStoryboardName</key>
        <string>LaunchScreen</string>
        <key>UIRequiredDeviceCapabilities</key>
        <array>
            <string>armv7</string>
        </array>
        <key>UISupportedInterfaceOrientations</key>
        <array/>
        <key>UIViewControllerBasedStatusBarAppearance</key>
        <false/>
        <key>LSApplicationCategoryType</key>
        <string></string>
    </dict>
    </plist>

我尝试重新启动 xcode,清理项目并全部构建。

有什么建议吗?谢谢

iOS 不允许不安全的 HTTP 请求。为此,您必须在 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>