403 Alamofire未要求提供身份验证凭据

时间:2017-03-06 12:48:28

标签: ios swift authentication alamofire

我在Alamofire的get请求中得到403。我从服务器获得的错误消息是:未提供身份验证凭据。 一直在请求中缺少此身份验证标头的问题。我确定我在身份验证标头中发送了访问令牌。 WireShark显示请求是使用auth标头发出的。所以我不确定如何解决这个问题。以下是代码段:

 var authenticatedJsonHeaders: [String: String] {
        get {
            return [
                "Content-Type": "application/json",
                "Accept": "application/json",
                "Authorization": "\(accessTokenAuthType.rawValue) \(accessTokenString)"
            ]
        }
    }

.....

return Alamofire.request(urlString, method:method, parameters: nil, encoding: encoding, headers: authenticatedJsonHeaders)
        .response { response in

            let currentUserId = ApplicationState.sharedInstance.currentUserManager.getCurrentUserProfileId()

            if(currentUserId == 0){ //if current user exists, do not sign the user out!
                print("bye user..")
                self.signOutUnauthorizedUser(response.response?.statusCode, urlOrSuffix: urlString)
            }

            self.checkResponseForSharevilleAlertMessage(response.response)

            if !hasResponseObject {
                if /*
let response = response,*/ (response.response?.statusCode)! < 400 && response.error == nil {
                    print("success for statuscode: \(response.response?.statusCode) url: \(urlString)")
                    success(nil)
                } else {
                    sendApiErrorWithUrlIfStatusCodeIsNot204(self.getUrlFromSuffix(urlString), statusCode: response.response?.statusCode)
                    print("fail for statuscode: \(response.response?.statusCode ?? nil) url: \(self.getUrlFromSuffix(urlString))")
                    print("request header")
                    print(response.request ?? "none"
                    failure(response.error)
                }
            }
        }
        .responseJSON { data in
            if hasResponseObject {
                if let value = data.result.value, data.response != nil && data.response!.statusCode < 400 && data.result.error == nil {
                    print("success for statuscode: \(data.response!.statusCode) url: \(urlString)")
                    success(value as AnyObject?)
                } else {
                    sendApiErrorWithUrlIfStatusCodeIsNot204(urlString, statusCode: data.response?.statusCode)
                    print("fail for statuscode: \(data.response?.statusCode) url: \(urlString)")
                    failure(data.result.error)
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

我认为你应该试试

  

.validate()

。在request()和response()之间。在您的alamofire请求中

Alamofire.request(urlString, method:method, parameters: nil, encoding: encoding, headers: authenticatedJsonHeaders)
        .validate().response {  //   }