ios 发送http请求失败
iOS9引入了新特性App Transport Security (ATS)。详情:App Transport Security (ATS)
原先是发送的ip地址的请求,现在改成域名,ios请求发送就出现了问题。
解决方式:
打开项目 info.plist->open as source code->添加上
“
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>自己的域名</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
”
选择使用 NSExceptionDomains 来针对特定的域名,通过设定该域名下的 NSExceptionAllowsInsecureHTTPLoads 来开放 HTTP 应该要相对容易过审核。“需要访问的域名是第三方服务器,他们没有进行 HTTPS 对应”会是审核时的一个可选理由,但是这应该只需要针对特定域名,而非全面开放。如果访问的是自己的服务器的话,可能这个理由会无法通过。
第二种方式:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
你依然可以添加 NSAllowsArbitraryLoads 为 YES 来全面禁用 ATS,不过如果你这么做的话,需要在提交 app 时进行说明,为什么需要访问非 HTTPS 内容。一般来说,可能简单粗暴地开启这个选项,而又无法找到正当理由的 app 会难以通过审核。