【问题标题】:Basic auth with Alamofire does not work使用 Alamofire 的基本身份验证不起作用
【发布时间】:2017-02-27 16:47:41
【问题描述】:

我一直在尝试使用 Alamofire 的基本身份验证支持:

self.sessionManager.request(request)
    .authenticate(user: user, 
                  password: passwordHashAsHex)

但是,我从我的网络服务器收到 403。

如果我自己添加 auth 标头:

let authString = "\(user):\(passwordHashAsHex)"

guard let auth = authString.data(using: String.Encoding.utf8) else {
        throw ...
}

request.setValue("Basic \(auth.base64EncodedString())",
    forHTTPHeaderField: "Authorization"
)

效果很好。

在 Alamofire 的完成/响应处理程序中检查 response.request!.allHTTPHeaderFields,我注意到没有条目 Authorization。为什么不呢?

【问题讨论】:

    标签: swift http-headers alamofire basic-authentication


    【解决方案1】:

    仔细阅读the documentation我们发现:

    Request 上的身份验证方法将在适当的时候自动将 URLCredential 提供给 URLAuthenticationChallenge

    ...

    根据您的服务器实现,Authorization 标头也可能是合适的。

    我的服务器似乎只接受后一种变体,所以我确实手动添加标题。 Request.authorizationHeader 可以处理繁重的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-29
      • 2016-05-31
      • 2014-09-06
      • 2014-01-22
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      相关资源
      最近更新 更多