我的应用程序[NSHTTPCookieStorage setCookie]破坏了浏览器的cookie?

时间:2011-10-24 22:33:48

标签: objective-c macos cocoa

我正在通过[NSHTTPCookieStorage setCookie]登录API。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSHTTPCookieStorage_Class/Reference/Reference.html

如果我在浏览器打开时登录,已经使用同一用户登录到同一站点,则应用程序和浏览器都会继续正常工作。

但是,如果我Quit我的浏览器,再次打开它,然后返回该网站,则cookie已丢失。用户尚未登录。

这里发生了什么,是否有办法强制应用使用与浏览器不同的Cookie?

或者,如果我们在应用之间“共享”Cookie,我是否可以使用已登录用户的Cookie登录我的应用而无需输入用户名/密码?

2 个答案:

答案 0 :(得分:5)

以下是根据您的要求创建新Cookie的代码: (未在XCode中测试)

// Dictionary of attributes for the new cookie
NSDictionary *newCookieDict = [NSMutableDictionary 
                               dictionaryWithObjectsAndKeys:@".example.com", NSHTTPCookieDomain,
                                                            @"Test Cookie", NSHTTPCookieName,
                                                            @"/", NSHTTPCookiePath,
                                                            @"test1234567890", NSHTTPCookieValue,
                                                            @“2011-10-26 00:00:00 -0700", NSHTTPCookieExpires, nil];
// Create a new cookie
NSHTTPCookie *newCookie = [NSHTTPCookie cookieWithProperties:newCookieDict];

// Add the new cookie
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:newCookie];

特别注意字典的最后一个元素

答案 1 :(得分:0)

您是否设定了Cookie的到期日期?如果不这样做,NSHTTPCookie假定只是会话(link to docs