我有一个网址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设备,但它在模拟器上工作正常。解决方案是什么?
答案 0 :(得分:3)
我的iPad的日期/时间设置出现了问题。首先,我尝试在iPad上打开Chrome浏览器上的google.com然后显示不安全的网络错误。所以我更改了iPad的日期/时间设置,我的问题已经解决。