ios - NSHTTPCookieStorage 用于相同的 URL 但不同的用户

标签 ios nsurlsession nshttpcookie nshttpurlresponse nshttpcookiestorage

可能这是一个愚蠢的问题,但我想为相同的 url 存储 cookie,但为用户名存储不同的 cookie。如何使用 NSHTTPCookieStorage 来实现?这就是我从响应中存储 cookie 的方式。

        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

        NSDictionary *headerFields = [httpResponse allHeaderFields];


        NSArray* cookies = [NSHTTPCookie
                            cookiesWithResponseHeaderFields:headerFields
                            forURL:[NSURL URLWithString:@""]];

        for (NSHTTPCookie *cookie in cookies) {
            [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
        }

       NSString *urlString = ...;

        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:cookies forURL:[NSURL URLWithString:urlString] mainDocumentURL:nil];

最佳答案

如果我对您的理解正确,您希望为不同的用户设置单独的 cookie 集。如果是这样,那么您应该:

  • 创建您自己的自定义 cookie 存储类(可能只是一个以基 URL 作为键,cookie 数组作为值的字典)并在其中存储 cookie,除了使用 sharedHTTPCookieStorage目的。
  • 当您更改用户时,删除共享 cookie 存储并从新用户的 cookie jar 中复制 cookie(或有选择地从共享 jar 中删除该用户创建的每个 cookie)。

  • 如果我误解了您,并且您出于某种原因想要在共享 cookie 存储之外存储一个特定的 cookie:
  • 使用 nil cookie jar(禁用自动 cookie 存储)基于配置创建 NSURLSession 对象。
  • 像您在上面所做的那样将 cookie 存储到一个 cookie jar 中(可能是也可能不是共享的 cookie jar ),但不要存储您想要避免存储的那些。
  • 编写一个方法来将该 cookie jar 中的 cookie 添加到 NSURLRequest 对象。
  • 在使用 URL 请求对象创建任务之前,请始终记住调用该方法。

  • 当然,这一切都假设 NSURLSession。我认为没有办法使用 NSURLConnection 控制 cookie 存储。所有 cookie 都存储在 cookie jar 、句号、AFAIK 中。

    关于ios - NSHTTPCookieStorage 用于相同的 URL 但不同的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37597250/

    相关文章:

    ios - 我可以为警报 Controller 添加长按事件吗

    ios - CocoaPods - 红色框架?

    iOS 企业配置文件 : How many can I have?

    iOS 后台上传 - 如果应用程序崩溃,如何验证收到的响应?

    uiwebview - 为 UIWebView 请求设置 Cookie

    ios - 在 ios 中的 imageView 中显示来自路径的图像

    swift - 使用 Swift 使用 session.dataTaskWithRequest() 获取 URL 的内容 - 数据不会转换为 NSString

    ios - 当我使用 post 方法向服务器发送请求时显示异常

    iphone - 如何强制 UIWebView 读取 NSHTTPCookie

    objective-c - NSHTTPCookieStorage 状态未在应用退出时保存。那里有任何明确的知识/文档吗?