iOS10适配ATS的问题
2016-12-12 本文已影响75人
petter102
OS 9中默认非HTTS的网络是被禁止的,当然我们也可以把NSAllowsArbitraryLoads设置为YES禁用ATS。不过iOS 10从2017年1月1日起苹果不允许我们通过这个方法跳过ATS,也就是说强制我们用HTTPS,如果不这样的话提交App可能会被拒绝。但是我们可以通过NSExceptionDomains来针对特定的域名开放HTTP可以容易通过审核。
1、首先需要后台兼容ssl
2、需要在info.plist中删除原有的兼容HTTPS的 App Transport Security Settings 中的 Allow Arbitrary Loads :YES 删除
3、然后添加例外NSExceptionDomains
添加的域名为字典类型的 每个字典类型下面的key有三种NSIncludesSubdomains、NSExceptionRequiresForwardSecrecy、NSExceptionAllowsInsecureHTTPLoads。全都是BOOL类型的
- NSIncludesSubdomains是否允许子域名使用http YES 就是允许
- NSExceptionRequiresForwardSecrecy 这个添加例外的话一般都是设置为NO 的看要不然也没有添加例外的必要了。
- NSExceptionAllowsInsecureHTTPLoads 是否允许在HTTPS环境下使用http 添加HTTP类外当然YES
示例如下图阿里云的服务器。只需要设置域名。而不是子域名。
注意 !图片的域名如果是http的话也要添加例外的。要不然图片是加载不出来的。
Paste_Image.png如有疑问欢迎交流。我会第一时间回复。