Fetch(或Axios)in react native不适用于iOS应用的expo

时间:2017-08-07 12:53:41

标签: ios react-native fetch expo

iOS不允许导航到仅http网址,只允许使用https。

有一个解决方案,它正在改变info.plist文件中的一些代码

https://github.com/facebook/react-native/issues/8717

如何更改iOS的设置,因为它只附带.expo文件夹,但没有别的。

我是否需要为此更改服务器配置? :(

2 个答案:

答案 0 :(得分:1)

正如您所知,问题是iOS不允许对非安全(仅限http)域进行任意调用。这是iOS 9引入的一项功能,旨在将开发人员推向更安全的连接。

根据这篇文章(2017年中),有解决方法。你应该打开

  

{您项目} / IOS / {你的项目} /Info.plist

并为您定位的域设置正确的值(docs)。

以下示例将禁用ATS并允许对somedomain.com的HTTP调用:

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

在您的情况下,我相信您正在寻找错误位置的Info.plist文件。它不是节点模块的一部分,而是查看上面指定的ios路径。

答案 1 :(得分:1)

不幸的是,Expo不允许您修改App Transport Security设置,但可能会在配置选项中进行烘焙。 Here's a Github thread

您可以从世博会eject,但只有在100%确定的情况下才能这样做。

  

这将为您提供一个与react-native init

创建的项目非常相似的项目

这是一个Error: y$II <- apply(y,2,function(x) (2(x[,4]) - x[,2] - x[,3]) / (x[,2] - x[,3]) * x[,5]) Error in FUN(newX[, i], ...) : attempt to apply non-function ios目录,导航到android会显示ios/YourProject/

在服务器上安装SSL证书会有多大的困难?这样做可能更有益,您可以使用letsencrypt之类的免费服务。