AlamofireマネージャーインスタンスにCookieを自動的に記憶させて設定させようとしていますが、失敗した試みは次のとおりです:
let cfg = NSURLSessionConfiguration.defaultSessionConfiguration()
let cooks = NSHTTPCookieStorage.sharedHTTPCookieStorage()
// makes no difference whether it's set or left at default
cfg.HTTPCookieStorage = cooks
cfg.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always
let mgr = Alamofire.Manager(configuration: cfg)
mgr.request(NSURLRequest(URL: NSURL(string: "http://httpbin.org/cookies/set?stack=overflow"))).responseString {
(_, _, response, _) in
var resp = response // { "cookies": { "stack": "overflow" } }
// becomes empty if cfg.HTTPCookieStorage set to nil
}
mgr.request(NSURLRequest(URL: NSURL(string: "http://httpbin.org/cookies"))).responseString {
(_, _, response, _) in
var resp = response // { "cookies": {} }
// always empty no matter what
}
cooks.cookiesForURL(NSURL(string: "http://httpbin.org/cookies")) // 0 elements
最初の URL はヘッダーを送信し、次に ( 2 番目の URL に相当するSet-Cookie : stack=overflow; Path=/
) にリダイレクト (302) します。/cookies
これは私のブラウザでは問題なく動作するので (最初の URL にアクセスすると、2 番目の URL には常にその Cookie が表示されます)、Alamofire でその動作を再現したいと考えています。