Ios Alamofire是否自动存储cookies?
我是新来的Alamofire,如果这是一个noob问题,我很抱歉:这个框架自动存储cookies 这是因为我有这样一个简单的请求:Ios Alamofire是否自动存储cookies?,ios,swift,post,cookies,alamofire,Ios,Swift,Post,Cookies,Alamofire,我是新来的Alamofire,如果这是一个noob问题,我很抱歉:这个框架自动存储cookies 这是因为我有这样一个简单的请求: Alamofire.request(.POST, loginURL, parameters: ["fb_id": fbId, "fb_access_token": fbToken]) .responseJSON { response in //print(response.request) // original URL
Alamofire.request(.POST, loginURL, parameters: ["fb_id": fbId, "fb_access_token": fbToken])
.responseJSON { response in
//print(response.request) // original URL request
//print(response.response) // URL response
//print(response.data) // server data
//print(response.result) // result of response serialization
if let JSON = response.result.value {
print("loginURL - JSON: \(JSON)")
}
}
此请求响应带有cookie会话,出于安全原因,我需要执行其他请求;奇怪的是,就像魔术一样,我已经可以在第一篇文章之后完成其他请求,而不必手动读取cookie并存储它。我确信其他请求需要cookie会话,因为它们在例如postman上失败,但在这里不是
这只是一个功能?因为我在官方网站上找不到这方面的任何信息。是的!Alamofire基本上是
NSURLSession
的包装器。其管理器通过调用defaultSessionConfiguration()
使用默认的NSURLSessionConfiguration
正如其github页面在第节中所述:
ALAMOFIR是建立在<强> NSURLISTS> <强>和基础URL加载系统之上。为了充分利用这个框架,建议您熟悉底层网络堆栈的概念和功能
在第条下: 顶级便利方法(如Alamofire.request)使用Alamofire.Manager的共享实例,该实例使用默认NSURLSessionConfiguration配置 而fordefaultSessionConfiguration()
表示:
默认会话配置使用基于磁盘的持久缓存(结果下载到文件时除外),并将凭据存储在用户的密钥链中。它还将cookie(默认情况下)存储在与NSURLConnection和NSURLDownload类相同的共享cookie存储中
对于使用Moya并希望禁用存储cookie的用户,请制作一个
PluginType
(修复缺少X-CSRF-Token请求标头)
非常基本的例子:
public final class DisableCookiePlugin: PluginType {
public init() {
}
public func prepare(_ request: URLRequest, target: TargetType) -> URLRequest {
var mutableRequest = request
mutableRequest.httpShouldHandleCookies = false
return mutableRequest
}
}
然后使用它
MoyaProvider<Api>(
plugins: [
//NetworkLoggerPlugin(configuration: .init(logOptions: .verbose)),
DisableCookiePlugin()
]
MoyaProvider(
插件:[
//NetworkLoggerPlugin(配置:.init(logOptions:.verbose)),
DisableCookiePlugin()
]