Ios Alamofire是否自动存储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,如果这是一个noob问题,我很抱歉:这个框架自动存储cookies

这是因为我有这样一个简单的请求:

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配置

而for
defaultSessionConfiguration()
表示:

默认会话配置使用基于磁盘的持久缓存(结果下载到文件时除外),并将凭据存储在用户的密钥链中。它还将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()
]