我已经使用Cordova 3.2和jquery mobile 1.3创建了一个iOS应用程序。我使用jquery ajax向RESTfull服务发送请求以检索/更新信息。
我有一些测试设备,各种iPhone,各种不同的iOS版本。在iPhone 4S上运行iOS 7时,如果发送任何ajax请求,我会收到以下错误消息:
NSURLConnection/CFURLConnection HTTP load Failed (kcfStreamErrorDomainSSL,-9813)
这只会发生在这个设备上,在另一个iPhone 4S上,也运行iOS 7,它的工作原理非常好,就像我使用的所有其他测试设备一样。
我已经读过,这表明证书在某些地方是无效的,在这种情况下,这可以被忽略,为什么会影响一个设备?
任何人都可以提出为什么会发生这种情况,以及可能会对设备造成什么影响,从而阻止其在我的一个设备上运行。谢谢
解决方法
如果它在某些设备上工作,而不是其他设备,则这些设备的证书验证参数有一些差异。这里有一些事情要看:
快乐的设备有一些根证书,不快乐的设备不?特别是如果他们运行不同的iOS版本,他们也可能有不同的可信证书列表。尝试进入设置>一般>关于并比较最底层的“Trust Store”号码。查看更多信息here。
>在过去的某个时刻,您是否已经在快乐的设备上手动接受一些中间证书(用于签署此证书)?
>不快乐的设备上的日期/时间是否错误?如果设置为证书到期日之后或证书颁发日期之前的时间,它将拒绝它。我总是在这个脚下射击自己!
如果您访问不愉快设备上的浏览器中的端点URL,它会给您什么错误? (注意:显然,您的服务器也会给您一些错误,因为您没有使用正确的标题和参数进行请求,我在谈论Safari本身,但应该给出一个更详细的信息,它是什么(它认为)是证书有误。)
*编辑以纠正我误会的内容:如果您在Safari中访问URL,则您无权接受叶子证书,如果您尝试直接加载它们,则只能选择接受中间证书。