ios - 为什么 Alamofire 在发布请求时会引发 CredStore 错误?
问题描述
我正在使用 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" : "" }
同样在我们使用的 Rails 休息控制器中before_action :authenticate_user!
。如果我从控制器中删除此服务工作正常,但我们需要它。我也尝试过使用本地服务器和远程主机上的服务器,但结果相同。
我还发现这篇文章谈到了相同的错误CredStore Perform Query 错误,但我们不为此应用程序使用用户名和密码身份验证。
另一种方法是使用 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
}()
解决方案
此错误是由操作系统检查是否有任何与您的域关联的凭据产生的,因为 Alamofire 实现了相关的URLSession
委托方法,并且不影响请求完成。你可以忽略它。
推荐阅读
- java - 如何在java中杀死任务管理器?
- python-2.7 - pip:ImportError:没有名为重试的模块
- php - Laravel - (1/1) FatalErrorException 语法错误,意外的“?” 在 LaravelLocalization.php 第 896 行
- r - 改变颜色分组条形图ggplot2
- ruby-on-rails - Unable to activate money-6.12.0, because i18n-1.1.0 conflicts with i18n (< 1.1, >= 0.6.4) (Gem::ConflictError)
- linux - 从虚拟 Linux 网络设备驱动程序发送的 RX 数据包被丢弃
- postgresql - OpenShift集群中的PostgreSQL服务能否通过暴露路由接收外部流量
- android - 通过 wowza(直播)将谷歌眼镜连接到安卓应用
- sonarqube - SonarCube 能否将指定规则应用于特定代码?
- typescript - 动态组件在 vue 的打字稿中不起作用