【问题标题】:Why Alamofire throws a CredStore error on post request?为什么 Alamofire 在发布请求时会引发 CredStore 错误?
【发布时间】:2023-03-10 12:00:02
【问题描述】:

我正在使用 swift 和 Alamofire 开发一个 iOS 项目,当我尝试发布请求时收到一条奇怪的消息。奇怪的是,获取请求工作正常。

CredStore - performQuery - Error copying matching creds.  Error=-25300, query={
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = htps;
"r_Attributes" = 1;
sdmn = Application;
srvr = "www.***.com";
sync = syna;}

我不知道这是什么意思。

Alamofire.request(
       path,
       method: .post
      ).responseJSON { response in

                switch response.result {
                    case .success(let data):
                        let json = JSON(data)
                        print(json)
                       
                    case .failure(let err):
                        SVProgressHUD.dismiss()
                        print(err)
                    }

                }

我们在后端使用 Ruby on Rails,返回的 json 总是:

{ "error" : "" }

我们也在使用before_action :authenticate_user! 的Rails 休息控制器。如果我从控制器中删除此服务工作正常,但我们需要它。我也尝试过使用本地服务器和远程主机上的服务器,但结果相同。

我还发现这篇文章谈到了相同的错误CredStore Perform Query error,但我们不使用此应用的用户名和密码身份验证。

另一种方法是使用 Alamofire SessionManager 从登录手动设置 cookie,但没有帮助。

lazy var sessionManager: SessionManager = {
        
            let cookies = HTTPCookieStorage.shared.cookies
            let configuration = URLSessionConfiguration.default
            configuration.httpAdditionalHeaders = HTTPCookie.requestHeaderFields(with: cookies ?? [])
            configuration.urlCredentialStorage = nil

            let manager = Alamofire.SessionManager(configuration: configuration)
               
            return manager
    }()

【问题讨论】:

    标签: ios ruby-on-rails swift authentication alamofire


    【解决方案1】:

    此错误是由操作系统检查是否有任何与您的域相关联的凭据产生的,因为 Alamofire 实现了相关的 URLSession 委托方法,并且不影响请求完成。你可以忽略它。

    【讨论】:

    • 不是真的,我无法解决这个问题,因为响应正文不是我需要的。服务器返回 {error: ""},而不是我需要的 json。状态码也是 401。
    • 如果您确实需要使用凭据,请使用带有适当凭据的authenticate() 方法,或添加适当的标头。
    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 2019-06-30
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2017-10-31
    相关资源
    最近更新 更多