Mar*_*idy 18 iphone jquery xcode ios cordova
我使用Cordova 3.2和jquery mobile 1.3创建了一个iOS应用程序.我使用jquery ajax将请求发送到RESTfull服务以检索/更新信息.
我有许多测试设备,各种iPhone,各种不同的iOS版本.在运行iOS 7的iPhone 4S上,当发送任何ajax请求时,我收到以下错误:
NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
Run Code Online (Sandbox Code Playgroud)
这只发生在这台设备上,在另一台运行iOS 7的iPhone 4S上,它运行得非常好,就像我正在使用的所有其他测试设备一样.
我已经读过,这表明证书在某种程度上是无效的,在这种情况下,这可以被忽略,为什么会影响一台设备?
任何人都可以建议为什么会发生这种情况,以及阻止它仅在我的某个设备上工作的设备有什么不同.谢谢
Mar*_*kiv 33
我有一个类似的问题,但在我的情况下,所有设备都曾经发生这种情况,并且只能在使用https的ajax调用期间发生.
如果是这种情况,在appDelegate.m文件末尾添加以下代码可以缓解您的问题.
@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
但我怀疑如果它在其他设备上工作,我给出的解决方案可能没有效果.但是试一试.
Ark*_*ito 12
如果它在某些设备而不是其他设备上运行,那么这些设备的证书验证参数会有所不同.以下是一些需要注意的事项:
如果您在不愉快的设备上的浏览器中访问您的端点URL,它会给您带来什么错误?(注意:显然你的服务器也会给你一些错误,因为你没有请求正确的标题和参数.我在谈论Safari本身 - 它应该提供一个更详细的信息,关于它(它认为)是什么证书有问题.)
*编辑纠正错误记录的内容:如果您转到Safari中的URL,则无法接受叶证书,如果您尝试直接加载它们,则只能选择接受中间证书.