我在 info.plist 中的 NSAppTransportSecurity 设置不适用于所有已定义的域和子域

Posted

技术标签:

【中文标题】我在 info.plist 中的 NSAppTransportSecurity 设置不适用于所有已定义的域和子域【英文标题】:My NSAppTransportSecurity settings in info.plist ins't working for all defined domanins and subdomains 【发布时间】:2015-11-25 14:26:05 【问题描述】:

在属性 NSAppTransportSecurity 下的 info.plist 中,我添加了一组与我的应用程序通信的域。但由于某些原因,我的设置仅适用于某些添加的域,而不适用于所有域,但我不知道为什么。对于任何想法,我都会非常有帮助。提前致谢。

例如,现在它适用于域 googleapis.com,但不适用于 imeteo.sk、imeteo.cz 或任何子域 (http://m.imeteo.cz)

这是我的 info.plist 的 sn-p

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowExceptionDomains</key>
    <dict>
        <key>imeteo.cz</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
        <key>imeteo.sk</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
        <key>googleapis.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

尝试在 webview 中加载其中一些域或子域后,我得到了这个:

App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用的 Info.plist 文件配置临时异常。

【问题讨论】:

【参考方案1】:

尝试将 NSExceptionAllowsInsecureHTTPLoadsNSExceptionMinimumTLSVersion 替换为 NSTemporaryExceptionAllowsInsecureHTTPLoadsNSTemporaryExceptionMinimumTLSVersion,如下所述:

http://www.neglectedpotential.com/2015/06/working-with-apples-application-transport-security/

另外,我使用的是 NSExceptionDomains 而不是 NSAllowExceptionDomains

【讨论】:

因为我在应用中使用 MoPub 广告,所以最后我使用了这个:NSAppTransportSecurityNSAllowsArbitraryLoads

以上是关于我在 info.plist 中的 NSAppTransportSecurity 设置不适用于所有已定义的域和子域的主要内容,如果未能解决你的问题,请参考以下文章

info.plist 中的 CFBundleShortVersionString 必须高于 1.0

Objective-C:info.plist 中的动态消息

Xcode 项目中的两个 info.plist 文件如何工作?

如何更改 info.plist 中的 NSServices 并在系统中进行更改?

info.plist 中的 <UIPrerenderedIcon> 不执行任何操作

Info.plist 中的 Bundle Identifier 与 App ID 和 iTunes Connect 的关系