当前位置:  开发笔记 > 编程语言 > 正文

如何清除NSHTTPCookieStorage中的cookie多一次?

如何解决《如何清除NSHTTPCookieStorage中的cookie多一次?》经验,为你挑选了1个好方法。

我的桌面应用程序连接到托管在Google App引擎上的Web应用程序.一旦它进行身份验证,它就会获得一个authtoken cookie,它会传递给所有未来的请求.这一切都有效.

但现在我想添加"退出".我试图像这样实现Sign Out:

- (void)signOut {
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:[NSURL URLWithString:self.serviceRootURLString]] copy] autorelease]) {
        [cookieStorage deleteCookie:each];
    }
    [self clearCredentialStorage];
}

问题是它似乎只是第一次工作.例如,我可以打开我的应用程序.登录.提出一些要求.登出.然后下次我提出请求时,我会被要求再次进行身份验证.好!

但在我第二次验证问题发生后.身份验证有效.我得到了authtoken cookie.我可以提出要求.但是当我尝试第二次注销(没有重新启动我的应用程序)时,authtoken cookie似乎没有被删除.它似乎从我的应用程序角度删除...我问NSHTTPCookieStorage它有我的URL的cookie,它没有返回.但是如果我尝试发出另一个请求(应该需要authtoken cookie)请求才能正常工作,我没有得到401响应,我再也没有被要求进行身份验证.

因此,如果我正确理解事物,似乎从我的角度删除了cookie,但它们不会从底层URL加载框架的角度删除.

可能感兴趣的可能是问题与:http://www.macworld.com/article/143343/2009/10/safaricookieproblems.html

有谁知道如何在与Web服务交互的应用程序中始终如一地实现"注销"功能?

谢谢,杰西



1> Chris..:
+(void)clearAllCookies {
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in cookieStorage.cookies) {
        [cookieStorage deleteCookie:each];
    }
}

我知道这是一个老问题,但答案就是这样.我们目前正在使用我们的应用程序清除所有Cookie UIWebView(这只能访问您应用中的Cookie,而不是以任何方式共享交叉应用).

如果您只想清除特定的一次,您可以随时检查每个cookie对象的属性,决定是否要删除它.例如cookie.name isEqualToString @"somename"

希望这有助于那里的人.

编辑:从某些iOS版本开始,现在有一种更简单的方法,有一种新方法可以按日期清除cookie.

NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[cookieStorage removeCookiesSinceDate:[NSDate dateWithTimeIntervalSince1970:0]];

SWIFT 4.X版本:(更简单,一个班轮)

HTTPCookieStorage.shared.cookies?.forEach(HTTPCookieStorage.shared.deleteCookie)


嗯...在迭代数组时删除对象真的没问题吗?
NSHTTPCookie具有名称,域名等属性...因此您可以执行if([cookie.domain isEqualToString @"google.com"]){...};
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有