模拟器显示有关App Transport Security策略的错误需要使用安全连接

时间:2017-01-25 14:21:36

标签: ios react-native

这是我的组件代码..

render() {
    return (
      <WebView
        source={{uri: 'http://qq.com'}}
        style={{marginTop: 20}}
      />
    );
  }

这是我的&#34; NSAppTransportSecurity&#34;的info.plist代码。

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>qq.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>

当我跑步时

react-native run-ios

模拟器显示错误

enter image description here

如何解决? (使用RN 0.40版本)

3 个答案:

答案 0 :(得分:7)

您需要在info.plist中执行此操作才能执行http请求

enter image description here

答案 1 :(得分:4)

您设置了一个例外域,但实际上并没有在其中定义任何例外。您必须告诉它您希望该域的设置不同。你的plist应该是这样的:

<key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>qq.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>

答案 2 :(得分:2)

首先,您不应该单独使用NSAllowsArbitraryLoads密钥,因为您将来几乎肯定会被Apple拒绝进行申请审核。

我认为完全显示http://qq.com 是最简单的配置。 NSAllowsArbitraryLoadsInWebContent密钥只会受到iOS 10+的影响,因此如果您想支持iOS 9或更早版本,还必须添加NSAllowsArbitraryLoads

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

如果您想了解更多详情,我建议您参考官方文件:
https://developer.apple.com/library/prerelease/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

另见:
https://developer.apple.com/news/?id=12212016b

  

在WWDC 2016上,我们宣布提交给App Store的应用程序将需要在年底支持ATS。为了给你额外的准备时间,这个截止日期已经延长,我们将在新的截止日期确认后再提供更新。

我的意思 future 就是这个截止日期。