加载webview时NSURLSession / NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9814)?

时间:2016-08-12 13:41:59

标签: javascript ios google-maps app-transport-security

我有一个网址domain.com/map.jsp这是一个JSP页面,显示谷歌地图上有自定义标记,因为我写了一些javascript代码。当我在设备上加载此页面时,它会显示错误为< strong> NSURLSession / NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9814)。但它在iOS模拟器上运行正常。

我在google上搜索过很多关于这个但没有解决方案的方法。

1.Bye传递网址

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

2.仅指定网址。我无法对网址进行硬编码,因为网址可能是动态的,因此代码下方对我不起作用。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourdomain.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

3.我在mywebview类中添加了以下方法,但没有一个方法被调用

-(BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:
(NSURLProtectionSpace *)protectionSpace {
    return YES;
}

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:
(NSURLAuthenticationChallenge *)challenge {
    if (([challenge.protectionSpace.authenticationMethod
          isEqualToString:NSURLAuthenticationMethodServerTrust])) {
        if ([challenge.protectionSpace.host isEqualToString:@"mydomain.com"]) {
            NSLog(@"Allowing bypass...");
            NSURLCredential *credential = [NSURLCredential credentialForTrust:
                                           challenge.protectionSpace.serverTrust];
            [challenge.sender useCredential:credential
                 forAuthenticationChallenge:challenge];
        }
    }
    [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}

请建议为什么它不适用于iOS设备,但它在模拟器上工作正常。解决方案是什么?

1 个答案:

答案 0 :(得分:3)

我的iPad的日期/时间设置出现了问题。首先,我尝试在iPad上打开Chrome浏览器上的google.com然后显示不安全的网络错误。所以我更改了iPad的日期/时间设置,我的问题已经解决。