【问题标题】:App Transport Security ios 9 and instagram api应用传输安全 ios 9 和 instagram api
【发布时间】:2015-12-28 07:51:36
【问题描述】:

我在使用 instagram API 和 iOS 9 时遇到问题。 我的应用程序在 iOS 8 上正常运行,但在 iOS 9 上无法正常运行。 当我尝试在 instagram 中授权用户时收到此错误

NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9802)

我尝试了很多变体,例如来自这个问题App Transport Security breaks Web View

请帮帮我!

【问题讨论】:

  • 提供您实际尝试的详细信息。这个问题已经讨论过很多次了。
  • 您使用的是 http url 加载还是 HTTPS url?
  • 我使用 UIWebView 并尝试加载请求:[_webView loadRequest:req] 与 URL:api.instagram.com/oauth/authorize....(HTTPS url)

标签: ios instagram instagram-api


【解决方案1】:

Poisondmind's answer 几乎是正确的。但是Info.plist 还需要添加一些内容才能加载 Instagram 图片。

再次所有键的描述可以在ATS technotes.中找到
确保您使用的是https: URL。

还要注意有用的调试命令:
/usr/bin/nscurl --ats-diagnostics --verbose YOUR_URL

下面是让我的应用从 instagram 下载图片的配置:

【讨论】:

  • 这应该是公认的答案!非常感谢@nkukushkin
【解决方案2】:

Apple 出于重要的安全原因这样做,最终有必要在应用更新中启用传输安全性。使用旧版本会完全禁用它。这在 Xcode7 上为我修复了它:

在您的 Info.plist 文件中,添加 instagram.com 和子域作为 ATS 规则的例外,如下所示:

<key>NSExceptionDomains</key>
    <dict>
        <key>instagram.com</key>
        <dict>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

Apple 的传输安全technote 中记录了有关此操作的更多信息。

【讨论】:

    【解决方案3】:

    这是针对 ATS 的,如果您使用 xcode 7,它将嵌入 ATS 功能,尝试使用 6.1 xcode 之类的版本 7 构建,您可以在 ios9 设备上运行它,并且对 http 的调用将起作用。

    【讨论】:

    • 不好的建议,它不应该是公认的答案。 Xcode 6.1 现在对我们大多数人来说不再可用了。
    猜你喜欢
    • 2016-01-17
    • 2016-08-27
    • 2015-10-24
    • 2016-01-02
    • 1970-01-01
    • 2016-06-07
    • 2017-03-09
    • 2015-09-17
    • 2016-02-12
    相关资源
    最近更新 更多