我在Swift 3中使用Alamofire 4构建一个应用程序,将PUT数据转换为MDM服务器的API,以进行大规模更新。
有些用户为其本地托管服务器使用内置CA或自签名SSL证书,如果该证书未下载并安装到钥匙串,Alamofire将不允许进行通信。
我找到了自述文件的安全部分,并在下面编写了以下代码:
private static var Manager: Alamofire.SessionManager = {
// Create the server trust policies
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"my.on-prem-server.com": .disableEvaluation
]
// Create custom manager
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
let manager = Alamofire.SessionManager(
configuration: URLSessionConfiguration.default,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
return manager
}()
问题在于我并不是唯一使用此功能的人,而且我无法静态设置每个人的服务器信息。不是每个人的服务器都是" my.on-prem-server.com"
我有一个名为" allowUntrustedURL"的字符串变量。从viewWillAppear()
上的代表填充哪些内容(他们在不同的视图中输入他们的服务器信息),但是当我尝试时
let serverTrustPolicies: [String: ServerTrustPolicy] = [
allowUntrustedURL: .disableEvaluation
]
我收到以下错误:Instance member 'allowUntrustedURL' cannot be used on type 'myViewController'
所以我想我可以选择。我考虑过要求人们下载他们的SSL证书并将其安装到钥匙串 - 但我认为我宁愿有一个复选框来禁用该要求,如果可能的话。
我可以使用全局禁用Alamofire的可信SSL要求(最好在检查一个框或某些内容以允许不受信任之后),或者传入一个我可以使用其URL填充的变量的方法因为他们正在填补空缺。
编辑:我还在网址中尝试了某种通配符,我似乎无法获得任何通配符或全局限额。答案 0 :(得分:0)
尝试serverTrustPolicies
var
并使用viewDidLoad
等方法对其进行初始化。
我认为当您尝试访问它时,您的问题serverTrustPolicies
尚不可用。