2017-01-10 26 views
0

我使用下面的共享实例创建一个会话管理器:AlamoFire:公钥穿针不工作

class Session { 
static let sharedInstance = Session() 

private var manager : SessionManager? 

func ApiManager()->SessionManager{ 
    if let m = self.manager{ 
     return m 
    }else{ 

     let serverTrustPolicies: [String: ServerTrustPolicy] = [ 
      "https:api-cat.example.com": .pinPublicKeys(
       publicKeys:savePublicKeys(), 
       validateCertificateChain:true, 
       validateHost:true 
      )] 
     self.manager = SessionManager(
      serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)) 
     return self.manager! 
    } 
}} 

其中savePublicKeys回报[SecKey]

即使在使用空的公钥数组设置新的ServerTrustPolicy后,我仍然能够成功调用并获取数据。 任何想法,如果我在这里犯任何错误?

回答

1

"https:api-cat.payeezy.com"看起来腥。

要么删除https:双组分或添加缺少的双斜线https://ServerTrustPolicyManager仅在其主机属性与请求的主机匹配时才应用策略,如果这些策略不匹配,则使用Apple的标准行为(请参阅Alamofire Documentation)。

+0

这解决了我的问题。感谢ChaosCoder。只是想添加这个,但问题是在'https'后缺少'//'。你可以改变你的答案以反映相同的情况。 – SagarU