2017-02-27 66 views
1

我一直在嘗試使用Alamofire的基本認證支持:與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。爲什麼不?

回答

1

在的the documentation仔細閱讀我們發現:

上一個Request的身份驗證方法會自動在適當的時候提供一個URLCredentialURLAuthenticationChallenge

...

根據服務器實現,Authorization頭也可能是合適的。

看來,我的服務器只接受後者的變體,所以我確實手動添加標題。 Request.authorizationHeader可以照顧咕嚕的工作。