Multiple NSHTTPCookieStorage in the same app

2019-05-23 04:05发布

问题:

I am writing a multi-user app using NSURLSession and I can't figure out how to have a separate cookie storage when working with multiple NSURLSession instances.

I tried setting NSURLSessionConfiguration's HTTPCookieStorage property with a NSHTTPCookieStorage that I alloc/init'ed myself but it doesn't work (cookies aren't stored, even if I call setCookie: myself)

I also tried using [NSURLSessionConfiguration ephemeralSessionConfiguration] but then again, my cookies aren't stored between requests. The Set-Cookie header is present in the server's responses, and using [NSHTTPCookieStorage sharedHTTPCookieStorage] works so the issue is in the code.

Is it at all possible to have separate cookie stores for different NSURLSession instances? I believed it was one of the main point of the new networking API.

回答1:

I am trying to achieve the same thing.

The ephemeralSessionConfiguration doesn't store your cookies, because its cookieAcceptPolicy is always set to NEVER, even if you try to change it to something else. Same goes for the manually allocated NSURLSessionConfiguration.

From my point of view this is in contrast to the documentation which states that ephemeral sessions use an in-memory cookie store.

I have posted a separate question regarding this issue: How to set cookieAcceptPolicy for ephemeral NSURLSession