iOS App Transport安全例外无效

时间:2015-10-28 09:33:14

标签: ios app-transport-security

我尝试连接到iOS 9.1上的自签名HTTPS服务器。

我正在使用:

[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];

我收到错误,说明证书无效:

Error Domain=NSURLErrorDomain Code=-1202 "<French error saying the certificate is invalid" 
UserInfo=
   {NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x13c768140>, 
    NSLocalizedRecoverySuggestion=<French recovery suggestion asking if the user wants to connect anyway>, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, NSErrorPeerCertificateChainKey=<CFArray 0x13d82ffe0 [0x1a1242b68]>

我已经尝试添加所有可能的传输安全异常,我目前的尝试是:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>mydomain.org</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
            </dict>
        </dict>
    </dict>

我也试过NSAllowsArbitraryLoads,但即使这样也行不通。 我有几个.plist文件(cocoapods和测试),我认为它是正确的(App / Supporting Files / Info.plist)。

任何可能出错的想法?​​

3 个答案:

答案 0 :(得分:1)

你需要像这样添加这个

<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

答案 1 :(得分:0)

所以这是一个NSURLConnection问题,而不是app transport。

对于记录以及可能遇到同样问题的人,我通过调用私有方法暂时修复了它(不要这样做):

+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;

这不会被Apple接受。真正的解决方案是使用delegate methods,当我们处理此问题时,我会编辑此答案(我的客户是&#34;开发人员&#34;,所以我使用他的选项,他说我们&#39; ;稍后会弄明白,我们赶时间......)

答案 2 :(得分:0)

我已使用以下步骤解决了问题

  1. 打开Project的plist文件
  2. 添加密钥“NSAppTransportSecurity”和“类型字典”
  3. 添加内键“NSAllowsArbitraryLoads”作为布尔值是
  4. enter image description here