如何为短暂的NSURLSession设置cookieAcceptPolicy

Dan*_*ert 8 cookies cookiestore nsurlsession

我试图使用短暂的NSURLSessions为我的应用程序中的几个任务提供单独的cookie处理.这些任务不直接绑定到UI.问题:无论我做什么,短暂的NSHTTPCookieStorage的cookieAcceptPolicy仍然是NSHTTPCookieAcceptPolicyNever.

这是我的代码:

// use a pure in-memory configuration with its own private cache, cookie, and credential store
__block NSURLSessionConfiguration* config = [NSURLSessionConfiguration ephemeralSessionConfiguration];

// do anything to accept all cookies
config.HTTPShouldSetCookies = YES;
config.HTTPCookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;
config.HTTPCookieStorage.cookieAcceptPolicy = NSHTTPCookieAcceptPolicyAlways;

__block NSURLSession* session = [NSURLSession sessionWithConfiguration:config];

NSURLSessionDataTask* task = [session dataTaskWithURL:[NSURL URLWithString:@"https://test.cgmlife.com/Catalogs"]
                                    completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                        NSHTTPCookieStorage* cookies = session.configuration.HTTPCookieStorage;
                                        NSLog(@"%@", cookies);
                                        NSLog(@"%lu", cookies.cookieAcceptPolicy);
                                    }];
[task resume];
Run Code Online (Sandbox Code Playgroud)

NSLog的输出始终是:

Ephemeral <NSHTTPCookieStorage cookies count:0>
1
Run Code Online (Sandbox Code Playgroud)

其中1是NSHTTPCookieAcceptPolicyNever的值(对于NSHTTPCookieAcceptPolicyAlways,预期为0).响应中的标题就在那里.

在会话还活着的时候,我可以做些什么来让NSHTTPCookieStorage记住我的cookie?我不需要也不想要任何持久性.我只想将cookie保留在内存中,以便在同一会话中重用它们以进一步请求.

Hea*_*ers 2

看起来临时会话永远不会存储 cookie。eskimo1 在 devforums 上说

ISTR 认为临时会话配置无法按照人们根据文档期望的方式工作。我从来没有抽出时间来详细研究这个问题,但看来你已经这样做了。您应该就此提交一个错误;实施和文档显然不同步,因此需要修复其中之一。