我在 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】:尝试将 NSExceptionAllowsInsecureHTTPLoads 和 NSExceptionMinimumTLSVersion 替换为 NSTemporaryExceptionAllowsInsecureHTTPLoads 和 NSTemporaryExceptionMinimumTLSVersion,如下所述:
http://www.neglectedpotential.com/2015/06/working-with-apples-application-transport-security/
另外,我使用的是 NSExceptionDomains 而不是 NSAllowExceptionDomains。
【讨论】:
因为我在应用中使用 MoPub 广告,所以最后我使用了这个:以上是关于我在 info.plist 中的 NSAppTransportSecurity 设置不适用于所有已定义的域和子域的主要内容,如果未能解决你的问题,请参考以下文章
info.plist 中的 CFBundleShortVersionString 必须高于 1.0
Xcode 项目中的两个 info.plist 文件如何工作?
如何更改 info.plist 中的 NSServices 并在系统中进行更改?
info.plist 中的 <UIPrerenderedIcon> 不执行任何操作
Info.plist 中的 Bundle Identifier 与 App ID 和 iTunes Connect 的关系