我在对我的应用程序后端执行API调用时遇到了一个问题,现在每个连接都会用
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
atyp = http;
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = http;
"r_Attributes" = 1;
srvr = "myappsurl.com";
sync = syna;
}我有点不知所措,因为我不知道是什么导致了这一切,或者CredStore到底做了什么。CredStore在iOS中有什么用途?
发布于 2017-10-18 08:39:34
当试图为未知的URLCredential从URLCredentialStorage检索URLProtectionSpace时,会发生此错误。例如:
let protectionSpace = URLProtectionSpace.init(host: host,
port: port,
protocol: "http",
realm: nil,
authenticationMethod: nil)
var credential: URLCredential? = URLCredentialStorage.shared.defaultCredential(for: protectionSpace)产生
CredStore - performQuery - Error copying matching creds. Error=-25300, query={
class = inet;
"m_Limit" = "m_LimitAll";
ptcl = http;
"r_Attributes" = 1;
srvr = host;
sync = syna;
}给它一个保护空间的证书:
let userCredential = URLCredential(user: user,
password: password,
persistence: .permanent)
URLCredentialStorage.shared.setDefaultCredential(userCredential, for: protectionSpace)下次您试图检索凭据时,错误就会消失。
我有点不知所措,因为我不知道是什么导致了这一切,或者CredStore到底做了什么。CredStore在iOS中有什么用途?
iOS上的凭据存储允许用户在设备上临时或永久地将基于证书或基于密码的凭据安全地存储到密钥链。
我怀疑您的后端服务器上有某种身份验证,并且该服务器正在请求对您的应用程序进行身份验证挑战(该应用程序不存在凭据)。
它可能会被安全地忽略,因为从URLCredentialStorage返回的零是一个有效的响应。
发布于 2019-01-08 22:28:37
我不知道为什么在使用Alamofire执行请求时会出现这个错误,但是如果您在HTTP头中使用一些标记来处理API请求,那么您可能根本不需要存储凭据。因此,我们可以根据我们的请求禁用它:
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = ourHeaders
// disable default credential store
configuration.urlCredentialStorage = nil
let manager = Alamofire.SessionManager(configuration: configuration)
...在这样的更改之后没有错误。
发布于 2018-11-07 09:23:27
同样的问题也发生在我身上,我发现如果您的API在URL末尾不包含"/“,那么iOS就不会向服务器发送”授权“值。因此,您将在控制台中看到一条类似于发帖的消息。
因此,只需在URL末尾添加"/“即可。
https://example.com/api/devices/https://stackoverflow.com/questions/46099940
复制相似问题